2013-08-20 82 views
0

我有模型wrints如圖(http://hosting5578581.az.pl/img/association.png),我可以弄清楚如何獲取數據(在ORDER模型中)如圖片中,我可以從OrderItems物品中獲取至極一些訂單相關,但我不知道如何將其顯示爲NAME(這是在相關文件表)中MySQL查詢我可以通過這樣做(例如ORDER_ID = 1):從cakephp中的一個模型加入兩個/三個表

select items.name from order_items, items WHERE order_items.item_id = items.item_id AND order_items.order_id = 1;

回答

0

如果我理解你的問題,你需要一些方法:

$this->recursive = 2; 
$this->read(null, $id); 

其中ID爲順序

+0

設置遞歸到任何其他獲得例如項目的名稱比-1是不好的建議海事組織。 – Dave

2

你要使用CakePHP's Containable Behavior號。

這是非常有據可查的(點擊上面的鏈接),並允許你拉任何你想要的相關數據。

注意:您幾乎應該只使用CakePHP's find()而不是您自己的自定義MySQL查詢。

它最終會是這個樣子:

$this->Order->find('first', array(
    'conditions' => array(
     'id' => $orderId 
    ), 
    'contain' => array(
     'Customer', 
     'OrderItem' => array(
      'Item' 
     ) 
    ) 
)); 
0

@戴夫: 在我OrdersController我有代碼:

$products = $this->Order->find('first', array(

      'contain' => array (
       'Customer', 
       'OrderItem' => array(
        'Item' 
       ) 
      ) 
       )); 

後發現()查詢我得到這個結果 (我省略陣列「訂單」和「客戶」 - 現在不重要):

array(

'OrderItem' => array(
     (int) 0 => array(
      'order_id' => '1', 
      'item_id' => '4', 
      'quantity' => '2', 
      'Item' => array() 
     ), 
     (int) 1 => array(
      'order_id' => '1', 
      'item_id' => '6', 
      'quantity' => '1', 
      'Item' => array() 
     ), 
     (int) 2 => array(
      'order_id' => '1', 
      'item_id' => '7', 
      'quantity' => '1', 
      'Item' => array() 
     ), 
     (int) 3 => array(
      'order_id' => '1', 
      'item_id' => '8', 
      'quantity' => '1', 
      'Item' => array() 
     ) 
    ) 
) 

1.那我現在怎樣才能得到所有'產品'?我開始用類似這樣的東西,但我知道這是不好的,因爲我必須寫[0] ... ['1] ...這是動態的變量

<?php echo h($products['OrderItem']['0']['item_id']); ?> 

2.As你可以看到

「項」 =>數組()

爲空;-),所以我不能從一個項目表/模型