2014-02-07 2 views
0

에 가입 나는 관계 belongsTo를 가지고 :CakePHP의 2.x를 내 모델 'mesn'에서 belongsTo를

public $belongsTo = array(
     'Order' => array(
      'className' => 'Order', 'foreignKey' => 'order_id', 'conditions' => '', 'fields' => '', 'order' => '' 
     ), 'SaleOrder' => array(
      'className' => 'SaleOrder', 'foreignKey' => 'sale_order_id', 'conditions' => '', 'fields' => '', 
      'order' => '' 
     ), 'ShippedBox' => array(
      'className' => 'Box', 'foreignKey' => 'shipped_box_id', 'conditions' => '', 'fields' => '', 
      'order' => '' 
     ) 
    ); /*  * * hasMany associations** @var array 

내 모델 기능 중 하나에서 내가 ShippedBox "는"belongsTo를 "에 다른 테이블에 가입하려면" (테이블 : 상자). 내가 시도

$arr_s_result = $this->find('all', array(
    'joins' => array(
    array('table' => 'shipments', 
     'alias' => 'MyShipments', 
     'type' => 'INNER', 
     'conditions' => array(
     'MyShipments.id = ShippedBox.shipment_id' 
    ) 
)), 
    'conditions' => array('Mesn.name' => $arr_search), 'recursive' => 0 
)); 

:

'MyShipments.id = ShippedBox.shipment_id' 

'MyShipments.id = box.shipment_id' 

심지어

을하지만 난 내가 알 수없는 컬럼의 오류 메시지가 합류 작성하려고 얼마나 중요하지 않습니다
'MyShipments.id = Boxes.shipment_id' 

테이블 "boxes"w i "shipment_id"필드가 있습니다.

어떻게이 결합을 사용할 수 있습니까?

답변

0
'MyShipments.id = box.shipment_id' 

에 :

또한
'MyShipments.id = Box.shipment_id' 

무엇 이것에 대해 :

$arr_s_result = $this->find('all', array(
           'conditions' => array('Mesn.name' => $arr_search), 'recursive' => 0 

));

belongsTo join이 자동으로 수행됩니다.

+0

같은 '절에'에서 "알 수없는 열 'Box.shipment_id'.... –

+0

어쩌면 당신 참여를 할 필요가 없습니다? belongsTo가 자동으로 수행되었으므로? – trafalgar

+0

SQL 문에서 실행되는 SQL 문에서 볼 수있는 문제는 상자가 "알 수없는"모든 조인 시작 부분에 조인을 추가한다는 것입니다. –

0

은 당신이 사용하는 서브 쿼리 같은 당신이 원하는 것을 얻기 위해 수행해야합니다 생각 -

$arr_s_result = $this->find('all', array(
    'joins' => array(
      array('table' => '(SELECT boxes.id, [enter other fields you need here] FROM shipments JOIN boxes ON boxes.shipment_id = shipments .id)', 
      'alias' => 'MyShipments', 
      'type' => 'INNER', 
      'conditions' => array(
     'Mens.shipped_box_id = MyShipments.id' 
     ) 
    )), 
    'conditions' => array('Mesn.name' => $arr_search), 'recursive' => 0 
)); 
+0

좋은 해결책처럼 보입니다. 내일 다시 일할 때 테스트하고 추가 의견이나 수락 –