繁体   English   中英

Cakephp从联接表中搜索

[英]Cakephp Search from join table

您好,我要在查询中加入多个表。 我想基于我正在多个表上检查的搜索关键字来获得结果。

这是我的代码

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_idcat_name

并且GigPostAndCategory具有idcat_idgig_post_id (因为一个gigpost可以具有多个类别,这就是为什么我为此制作了一个单独的表)

因此,如果搜索到的关键字与“类别”中的某项匹配,我也需要帮助以获取基于类别的结果

当您“包含”数据时,它通常实际上会运行一个单独的查询,然后将其组合在一起以返回给您。

因此,您不能对包含的表运行条件(取决于某些因素,但是最好假设您不能这样做)。

而是使用JOIN。 这将确保将其拉入同一查询中,并使您能够访问joined-table字段。

(提示:您可以在DebugKit中查看正在运行的查询。这通常会为您提供有关为什么它不起作用的线索。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM