Удалите родительский массив, если он пуст в CakePHP 3 - PullRequest
0 голосов
/ 30 октября 2018

Я должен удалить родительский массив, если содержимое недоступно или пусто. В приведенном ниже коде, если supplierOffer пуст, тогда я должен удалить массив SupplierInquiry, но здесь я получаю массив SupplierInquiry с пустым supplierOffer. Я не могу сбросить с помощью цикла 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);

1 Ответ

0 голосов
/ 20 ноября 2018

Вам необходимо использовать Inner join и указать условие на дочернем столе. А также вам нужно указать поля, которые вы хотите получить.

$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 ');
...