2017-01-24 1 views
1

у меня есть таблица, содержащая информацию о пользователе, имя модели пользователяCakePHP: поиск Фильтр по одной таблице на основе значений из другой таблицы

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

Модель пользователя связана с другой моделью под названием Record

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

Это прекрасно подходит для возврата выпадающего списка пользователей. Теперь мне нужно сделать следующий фильтр: список пользователей, основанный на том, имеют ли они одну или несколько записей в модели записи. Если они этого не сделают, они не должны появляться.

User 
---- 
id 
1 
3 

Я предполагаю, что это потребует пункт IN и присоединиться, но я не знаю «Cake» способ, чтобы установить его в своем коде.

ответ

2

Если вы уже установили связь между пользователем и запись таблицы в соответствующих моделях, то вы должны попробовать это в UsersController:

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

Спасибо. Я смог использовать массив 'group' => ('Record.userid') вместе с соединением, чтобы заставить его работать. Не * полностью * Торт-у, но я там! – Chris

+0

Рад быть полезным :) – Aarrbee