Я не могу использовать 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