2017-01-24 4 views
1

別のテーブルの値に基づいて一つのテーブルにフィルター検索は、モデル名は、ユーザーCakePHPの:私は、ユーザー情報を含むテーブルを持っている

User 
---- 
id full_name (for demo purposes) 
1  john doe 
2  jane doe 
3  john smith 
4  jane smith 

Userモデルが

Record 
------ 
userid(FK) 
1 
1 
3 
3 
3 
録音と呼ばれる別のモデルにリンクされています

私のコントローラには、いくつかの基準に基づいてユーザーを探すルーチンもあります。

$leads = $this->User->find('list',array(
'fields' => array('User.id','User.full_name'), 
'order' => array('User.full_name ASC'), 
'conditions'=>array('AND'=>array(
'NOT'=>array('User.deleted_record'=>1), 
array('NOT'=>array('User.username'=>'root', 
    array('User.username'=>'testuser'))) 
     )) 
)); 

これは、ユーザーのドロップダウンリストを返すために正常に機能します。私が今必要とするのは、レコードモデルにレコードが1つ以上あるかどうかに基づいてユーザーリストをさらにフィルタリングすることです。もしそうでなければ、彼らは現れてはいけません。

User 
---- 
id 
1 
3 

私はIN句を必要とし、参加します、これを推測しているが、私は私のコードでそれを設定するには、「ケーキ」の方法を知りません。あなたは既にそれぞれのモデルでのユーザーとレコードテーブル間の関係を設定している場合は

答えて

2

、あなたはがUserControllerでこれを試してみてください:

$userList = $this->User->Record->find('list', array('group' => array('Record.userid'))); 
+0

感謝を。私は、 'group' =>配列( 'Record.userid')を結合と一緒に使用して動作させることができました。 *完全ではない* Cake-y、でも私はそこにいる! – Chris

+0

喜んで役立つ:) – Aarrbee

関連する問題