我正试图为我的一个模特做一个litle搜索动作。
我的模型Salarie
与其他一些模型相关联,特别是:
Salarie
- > hasMany - > Permission
Salarie
- > hasOne - > Carburant
所以我尝试在我的模型Salarie
上创建一个find()来选择与关键字匹配的记录。
您可以在我的模型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
的结果中。
如果有人得到提示?
答案 0 :(得分:0)
SQL连接仅由hasOne和belongsTo关联完成,而不是由hasMany和HABTM完成。您可以使用Linkable插件根据hasMany关联的条件过滤记录。
答案 1 :(得分:0)
我找到了解决问题的方法。
'group' => 'Salarie.nom',
'joins'=>array(
array(
'table'=>'permissions',
'alias'=>'Permission',
'type'=>'LEFT',
'conditions'=>array(
'Salarie.id = Permission.salarie_id',
)
)
)
如果我有这个代码,我发现SQL查询效果很好。我只需要GROUP BY
以避免双重结果。