我的模型如图(http://hosting5578581.az.pl/img/association.png)所示,我可以弄清楚如何获取数据(在ORDER模型中),如图所示,我可以从OrderItems项目获取与某些顺序有关但我不知道如何在mysql查询中将其显示为NAME(在Items表中)我可以通过(例如order_id = 1)来执行此操作:
select items.name from order_items, items WHERE order_items.item_id = items.item_id AND order_items.order_id = 1;
答案 0 :(得分:2)
您需要使用CakePHP's Containable Behavior。
它有很好的文档记录(点击上面的链接)并允许您提取所需的任何相关数据。
注意:您几乎应该只使用CakePHP's find()而不是自己的自定义MySQL查询。
最终看起来像这样:
$this->Order->find('first', array(
'conditions' => array(
'id' => $orderId
),
'contain' => array(
'Customer',
'OrderItem' => array(
'Item'
)
)
));
答案 1 :(得分:0)
如果我理解你的问题,你需要一些方法:
$this->recursive = 2;
$this->read(null, $id);
其中id是订单编号
答案 2 :(得分:0)
@戴夫: 在我的OrdersController中我有代码:
$products = $this->Order->find('first', array(
'contain' => array (
'Customer',
'OrderItem' => array(
'Item'
)
)
));
在find()查询之后我得到了这个结果 (我省略了数组'Order'和'Customer' - 现在不重要了):
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'=&gt;阵列()
为null ;-)所以我无法从Item表/模型中获取项目的名称