2011-12-06 12 views
0

私はstoresとstore_detailsテーブルを持ち、今はstore_details_storesテーブルを持っています。HABTM関係の検索レコード - CakePHP

ストアモデルは、以下があります。

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

SQL + Cakeエラーとクエリログの投稿は間違いなく役に立ちます。 – sibidiba

+0

StoreDetailが結合されていないため、StoreDetail.nameが存在しないため、SQLエラーが発生しています。乾杯。 – CrocHunter

答えて

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