2016-09-18 101 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]); 
} 
]);