在CakePHP 3中按相关模型的条件查找

Anu*_*TBE 3 cakephp model-associations cakephp-3.2

我有两个表orderssub_orders.他们的关系是

$orders->hasMany('SubOrders', [
   'foreignKey' => 'order_id'
]);
Run Code Online (Sandbox Code Playgroud)

两个表都有invoice_nosub_invoiceorderssub_orders分别.

我必须从orders表中找到包含相关sub_orders位置或者$trackingId匹配的记录Orders.invoice_noSubOrders.sub_invoice

$findOrder = $this->Orders->find('all', [
    'conditions' => [
      'OR' => [
         'Orders.invoice_no' => $trackingId,
         'SubOrders.sub_invoice' => $trackingId
       ]
     ],
     'contain' => [
        'SubOrders'
     ]
  ]);
Run Code Online (Sandbox Code Playgroud)

但这会给出错误

Column not found: 1054 Unknown column 'SubOrders.sub_invoice' in 'where clause'
Run Code Online (Sandbox Code Playgroud)

Der*_*rek 5

尝试执行以下查询:

$findOrder = $this->Orders->find()
->where(['Orders.invoice_no' => $trackingId])
->contain(['SubOrders' => function ($q) use ($trackingId) {
   return $q

        ->where(['SubOrders.sub_invoice' => $trackingId]);
}
]);
Run Code Online (Sandbox Code Playgroud)