我有以下三种型号:Product,Order,OrderDetail。
Product具有以下关联:
public $hasMany = array('OrderDetail');Order具有以下关联:
public $hasMany = array('OrderDetail');OrderDetail具有以下关联:
public $belongsTo = array('Order');
public $belongsTo = array('Product');我正在使用Containable行为,并且想要find()产品。
如何在Order ()调用的conditions部分中使用find模型中的字段?
在我的Product模型中类似这样:
$this->find('all', array('
conditions' => array(
'Order.order_date' => '2011-09-12'
)
));发布于 2011-11-11 15:56:57
你不能用这种方式得到你想要的东西。如果你看一下Cake you的查询,你就会明白为什么。Containable执行多个查询,然后组装它们。
获取所需内容的最简单方法是从订单模型的角度执行查询,因为它是您正在过滤的模型。如果这不是一个选项,请参阅:
发布于 2011-11-11 00:40:11
使用'contain‘索引指定Order模型和相关条件。确保您在产品模型上使用containable行为。
$this->find('all', array(
'contain' => array(
'Order' => array(
'conditions' => array(
'Order.order_date' => '2011-09-12'
)
)
),
));另外,你可能想看看你的模型关系。我认为你可能在问题中错误地指定了它们。
发布于 2011-11-11 14:06:49
首先将$belongsTo数组合并到
public $belongsTo = array('Order', 'Product');然后重试
https://stackoverflow.com/questions/8081751
复制相似问题