2013-08-20 2 views
0

У меня есть модели, как на картинке (http://hosting5578581.az.pl/img/association.png), я могу выяснить, как я могу получить данные (в модели ORDER), как на картинке, я могу извлечь из предметов OrderItems, которые являются связанные с какой-то порядок, но я не знаю, как отобразить его как NAME (который находится в таблице элементов) в MySQL Query я могу сделать это (например 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); 

Где идентификатор номер заказа

+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

@ Dave: В моей 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.Как вы можете увидеть

'Item' => массив()

является пустым ;-), поэтому я не могу получить, например, имя элемента из элемента таблицы/модели