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

时间:2016-09-18 13:24:07

标签: cakephp model-associations cakephp-3.2

我有两张表orderssub_orders。 他们的关系是

$orders->hasMany('SubOrders', [
   'foreignKey' => 'order_id'
]);

这两个表分别在invoice_nosub_invoice中有orderssub_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'
     ]
  ]);

但是这会给出错误

Column not found: 1054 Unknown column 'SubOrders.sub_invoice' in 'where clause'

1 个答案:

答案 0 :(得分:5)

尝试执行以下查询:

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

        ->where(['SubOrders.sub_invoice' => $trackingId]);
}
]);