您好我在查询中加入了多个表。我想根据我在多个表上检查的搜索关键字得到结果。
这是我的代码
public function getGigPostBasedOnSearch($keyword){
$this->Behaviors->attach('Containable');
return $this->find('all', array(
'contain' => array(
'User','UserInfo', 'GigPostAndCategory.Category','Location','GigPostAndCalender'
),
'conditions' => array(
'AND' => array(
'GigPost.active' => 1,
'OR' => array(
array('GigPost.title LIKE' => '%'.$keyword.'%'),
array('GigPost.description LIKE' => '%'.$keyword.'%'),
array('Location.location_string LIKE' => '%'.$keyword.'%'),
)
)
//'OrderGigPost.request' => 0
),
'order' => 'GigPost.gig_post_id DESC',
'recursive' => 0
));
}
查询成功运行并获得我想要的结果。但在同一个查询中,我也希望在类别表中进行搜索。但如果我这样做
array('Category.cat_name LIKE' => '%'.$keyword.'%')
我收到sql错误,说它无法找到列名。
类别表有两列
cat_id
和cat_name
和 GigPostAndCategory 有
id
,cat_id
,gig_post_id
(因为一个gigpost
可以有多个类别,这就是我为此制作单独表格的原因)
因此,如果搜索的关键字与类别
中的某些内容相匹配,我也需要帮助来获取基于类别的结果答案 0 :(得分:0)
当你'包含'数据时,它实际上经常运行一个单独的查询,然后将它们组合在一起返回给你。
因此,您无法针对所包含的表运行条件(取决于某些因素,但最好只假设您不能)。
相反,请使用JOIN。这将确保它被拉入相同的查询,并允许您访问联合表字段。
(提示:您可以查看DebugKit以查看正在运行的查询。这通常会为您提供所需的线索,说明它为什么不起作用。)