2014-02-07 49 views
0

我有屬於關聯關係:CakePHP的2.X:加入在我的模型「MESN」屬於關聯

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」 (表格:框)。不過不要緊,我如何努力寫我一起獲得未知列的錯誤消息:

$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' 

其中表 「盒子」 W ith字段「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 

));

的屬於關聯連接是自動完成的。

+0

相同:‘對條款’「未知列‘Box.shipment_id’在.... –

+0

也許你不需要做加盟?由於屬於關聯是自動完成的? – trafalgar

+0

我從被執行的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

看起來像一個很好的解決方案。將測試當明天回來工作,並給予進一步的評論或接受 –