HABTM关系中的搜索记录 - CakePHP

时间:2011-12-06 11:33:29

标签: cakephp has-and-belongs-to-many

我有一个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')));

2 个答案:

答案 0 :(得分:1)

这是预期的行为。您需要根据条件设置bindModel调用,或者可以为连接表创建模型并直接查询。

请参阅:

CakePHP Book - HABTM

Modelizing HABTM Join Tables

$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');