Я должен удалить родительский массив, если контейнер недоступен или пуст. В приведенном ниже коде, если поставщикOffer пуст, мне нужно удалить массив SupplierInquiry, но здесь я получаю массив SupplierInquiry с пустым поставщикомOffer. Я не могу сбросить настройки с помощью цикла foreach, потому что тогда счетчик будет отображаться неправильно. Любое решение этой проблемы?
$this->paginate = [
'contain'=>['SupplierOffer'=>function($q){
return $q->where(['SupplierOffer.status IS NULL']);
},'CompanyMaster','SupplierOffer.PurchaseOrder','SupplierOffer.SupplierOfferProducts','SupplierOffer.SupplierOfferProducts.ProductsMaster','SupplierOffer.SupplierOfferProducts.Uom','SupplierOffer.SupplierOfferProducts.Currency', 'OwnerCompanies','SupplierOffer.CompanyMaster','SupplierOffer.SupplierOfferProducts.PrSuppliers'],
'order'=>['SupplierInquiry.id' => 'DESC'],
'conditions'=>[$condn,$conditions,'SupplierOffer IS NOT NULL'],
];
$supplierOffer = $this->paginate($this->SupplierInquiry);
Вам нужно использовать внутреннее соединение и выполнить условие для дочерней таблицы. А также вам нужно указать поля, которые вы хотите получить.
$query = $this->SupplierInquiry->find()->where(['SupplierOffer.status IS NOT' => NULL])->hydrate(false)->join([
'table' => 'supplier_offer',
'alias' => 'SupplierOffer',
'type' => 'INNER',
'conditions' => 'SupplierOffer.supplier_inquiry_id = SupplierInquiry.id'
])->select(' All fields you required ');
Думаю, что соответствие - это то, что вам нужно.