2016-09-18 88 views
1

我有两个表orderssub_orders。 他们的协会是通过CakePHP中关联模型的条件查找3

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

两个表分别有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' 
    ] 
    ]); 

但是这给了错误

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

为SubOrders模型添加条件。 – Salines

+0

'$ trackingId'将匹配来自'Orders'或'SubOrders'。不能使用'和',因为两者的条件都不会得到满足 –

回答

3

尝试做这样的查询:

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

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