я пытаюсь сделать небольшое поисковое действие для одной из моих моделей.
Моя модель Salarie
был связан с некоторыми другими моделями, в частности:
Salarie
-> hasMany -> Permission
Salarie
-> hasOne -> Carburant
Поэтому я пытаюсь найти () на моей модели Salarie
выбрать записи, которые соответствуют ключевому слову.
Это ключевое слово можно найти в моей модели Salarie
или в связанной модели Permission
, Carburant
,
Вот моя фактическая находка ():
$salaries = $this->Salarie->find('all',array(
'contain' => array(
'User','Agence','Entitee','Fonction','Contact','Ligne','Car','CallingCard','Badge','Carburant','Permission'),
'conditions'=>array(
'OR'=>array(
'Salarie.nom LIKE' => '%'.$keyWord.'%',
'Salarie.prenom LIKE' => '%'.$keyWord.'%',
'Salarie.secu LIKE' => '%'.$keyWord.'%',
'Salarie.tel LIKE' => '%'.$keyWord.'%',
'Salarie.mobile LIKE' => '%'.$keyWord.'%',
'Salarie.ville LIKE' => '%'.$keyWord.'%',
'Salarie.email LIKE' => '%'.$keyWord.'%',
'Carburant.numero LIKE' => '%'.$keyWord.'%',
)
)
));
Этот код работает, но не смотрит в Permission
таблица / модель, если я добавлю эту строку
'Permission.login LIKE' => '%'.$keyWord.'%',
в моем массиве условий я получил ошибку
Column not found: 1054 Unknown column 'Permission.login' in 'where clause'
Я попробовал с contain
но это не то, что я ищу, contain
фильтрует данные в результаты find
,
если кто-то получил советы?
Соединения SQL выполняются только ассоциациями hasOne и ownTo, а не hasMany и HABTM. Ты можешь использовать связываемый Плагин для фильтрации записей на основе условий для ассоциаций hasMany.
Я нашел то, что решило мою проблему.
'group' => 'Salarie.nom',
'joins'=>array(
array(
'table'=>'permissions',
'alias'=>'Permission',
'type'=>'LEFT',
'conditions'=>array(
'Salarie.id = Permission.salarie_id',
)
)
)
если бы у меня был этот код для моего поиска, SQL-запрос прекрасно работает. Я просто должен GROUP BY
чтобы избежать двойного результата.