我有以下三种模型Product
,Order
,OrderDetail
。
Product
具有以下关联:
public $hasMany = array('OrderDetail');
Order
具有以下关联:
public $hasMany = array('OrderDetail');
OrderDetail
具有以下关联:
public $belongsTo = array('Order');
public $belongsTo = array('Product');
我正在使用Containable
行为,想要find()
产品。
如何在find()调用的条件部分中使用Order
模型中的字段?
我的Product
模型中有类似的内容:
$this->find('all', array('
conditions' => array(
'Order.order_date' => '2011-09-12'
)
));
答案 0 :(得分:0)
使用“包含”索引指定订单模型和相关条件。确保您使用产品模型上的可包含行为。
$this->find('all', array(
'contain' => array(
'Order' => array(
'conditions' => array(
'Order.order_date' => '2011-09-12'
)
)
),
));
此外,您可能希望查看模型关系。我想你可能在这个问题上指出了错误。
答案 1 :(得分:0)
首先将$ belongsTo数组合并到
public $belongsTo = array('Order', 'Product');
再试一次
答案 2 :(得分:0)
你不能用这种方式实现你想要的东西。如果您查看Cake的查询,您会看到原因。 Containable会执行多个查询,然后组装它们。
实现所需内容的最简单方法是从Order模型的角度执行查询,因为它是您要过滤的模型。如果这不是一个选项,请参阅: