2016-09-18 2 views
1

두 테이블 orderssub_orders이 있습니다. 그들의 협회는CakePHP 3 관련 모델에 대한 조건으로 찾기

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

두 테이블이 각각 orderssub_ordersinvoice_nosub_invoice 열이 있습니다. 내가 orders 테이블에서 레코드를 찾을 수있다

$trackingId 중 하나 Orders.invoice_no 또는 SubOrders.sub_invoice

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

일치하는 곳 sub_orders 관련된하지만이

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

하위 조건 모델에 조건을 추가하십시오. – Salines

+0

'$ trackingId'는'Orders' 또는'SubOrders'에서 일치합니다. 두 조건 모두 만족할 수 없으므로'and'를 사용할 수 없습니다. –

답변

3

이 같은 쿼리를 수행 할 때 오류 제공 함유 :

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

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