CakePhp Где не предпринимать действий в глубоко вложенных ассоциациях - PullRequest
0 голосов
/ 24 мая 2018

Я не могу использовать where в глубоко вложенных ассоциациях.

Я пробовал разными способами, но в каждом случае, когда я использую where, он не предпринимает никаких действий

На самом деле, мой случай похож на документацию https://book.cakephp.org/3.0/en/orm/query-builder.html#using-innerjoinwith

То, что я пробовал до сих пор

$query = $itemTable
      ->find('all')
      ->contain(
        [
          'Products',
          'ItemGroups',
          'ItemGroups.FeaturesItemGroups.Features',
          'Products.ProductCategories.ProductFractions',
          'Products.ProductVessels',
          'ItemCancellationReasons',
          'Features',
          'Users',
          'Users.Groups',
          'Orders',
          'ItemPrices.ItemPricesBillingDocuments.RecyclerPrices.ProductFractions' => [
            'conditions' => [
              'ItemPricesBillingDocuments.id IS NOT NULL',
              'ItemPricesBillingDocuments.billing_document_id' => $billingDocumentToRevert->id,
              'ItemPricesBillingDocuments.billing_document_type_id' => BillingDocumentTypes::CREDIT_INDEX,
              'ItemPricesBillingDocuments.active' => 1
            ]
          ]
        ]
      );

Второй пример

->innerJoinWith(
        'ItemPrices.ItemPricesBillingDocuments',
        function ($q) use ($billingDocumentToRevert) {
          return $q->where(
            [
              'ItemPricesBillingDocuments.id IS NOT NULL',
              'ItemPricesBillingDocuments.billing_document_id' => $billingDocumentToRevert->id,
              'ItemPricesBillingDocuments.billing_document_type_id' => BillingDocumentTypes::CREDIT_INDEX,
              'ItemPricesBillingDocuments.active' => 1
            ]
          )
            ->contain(['RecyclerPrices.ProductFractions']);
        }
      )

3.

$query->where([
      'ItemPricesBillingDocuments.id IS NOT NULL',
      'ItemPricesBillingDocuments.billing_document_id' => $billingDocumentToRevert->id,
      'ItemPricesBillingDocuments.billing_document_type_id' => BillingDocumentTypes::CREDIT_INDEX,
      'ItemPricesBillingDocuments.active !=' => false
    ]);

И в результате отладки я получаю результаты, где флаг active равен false.

Каждое отношение из таблицы Items равно 1:many ItemsPrices.ItemPricesBillingDocuments также 1:many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...