我有一个store和store_details表,现在有一个store_details_stores表。
商店模型具有以下内容:
public $hasAndBelongsToMany = array('StoreDetail');
StoreDetail模型具有以下内容:
public $hasAndBelongsToMany = array('Store');
当我在stores_controller中尝试以下查询时,收到sql错误。由于某种原因,store_details表没有自然加入。这是预期的行为吗?我需要手动加入此表吗?
$this->Store->find('all', array('conditions' => array('StoreDetail.name' => 'Parking')));
答案 0 :(得分:1)
这是预期的行为。您需要根据条件设置bindModel调用,或者可以为连接表创建模型并直接查询。
请参阅:
$this->Store->bindModel(array(
'hasAndBelongsToMany' => array(
'StoreDetail' => array('conditions'=>array('StoreDetail.name' => 'Parking')
))));
$this->Store->find('all');
答案 1 :(得分:0)
我建议您在使用 bindModel 方法进行查找之前将条件应用于关联。
/**
* Apply a condition to the association
*/
$this->Store->bindModel(array(
'hasAndBelongsToMany' => array(
'StoreDetail' => array('conditions' => array('StoreDetail.name'=>'Parking'))
)));
/**
* Find all Stores that have an associated StoreDetail.name of 'Parking'
*/
$this->Store->find('all');