0

CakePHPには、Countries&Networksという2つのテーブルがあります。それらはHABTM関係を持ち、countries_networksによって結合されます。

Networksの「name」フィールドが「o2」であるcountriesテーブルからすべての国を取得しようとしています。

基本的なfind()を使用してこれを行うことはできないことに気付いたので、包含可能な動作を実験してきました。返されるデータを制限することができましたが、「containable」が希望どおりに機能しないようです。これが私のコードです:

$countries = $this->Country->find('all', array('contain' => array(
                                'Network' => array(
                                'conditions' => array('Network.name =' => "o2"),
    )
    )));

ただし、このクエリはすべての国を返し、「o2」の場合はNetwork.nameを返します。私が本当にする必要があるのは、Network.nameが「o2」である国のみを返し、他の国は返さないことです。

誰か助けてもらえますか?ありがとう。

4

4 に答える 4

2

「='=>」って何?「Network.name」の後に「=」記号を使用する必要はありません

于 2009-06-18T15:50:02.267 に答える
1

あなたはこのようなことをすることができるはずです:

$this->Country->hasAndBelongsToMany['Network']['conditions'] = array('Network.name'=>'o2');
$myCountries = $this->Country->find('all');

私はこれをテストしていませんが、それはあなたが必要な場所にかなり近づくはずです。

また、このようにhasAndBelongsToMany配列を変更すると、現在のページの読み込み中にそのモデルに対する後続のすべてのクエリに影響することに注意してください(ただし、次にモデルがインスタンス化されるときにリセットされます)。

于 2009-06-18T16:16:48.297 に答える
1

ドアを出る途中なので、簡単な説明でごめんなさい。

必要なのはHABTM関係だと思いますが、関連するモデルのデータに基づいてフィルタリングできるようにする必要があります。これを行うには、Cakeのマニュアルの「Containable」動作を確認してください。それがあなたが求めているものだと確信しています。

于 2009-06-18T19:49:54.973 に答える