【问题标题】:converting simple query to cake query?将简单查询转换为蛋糕查询?
【发布时间】:2010-06-22 12:16:18
【问题描述】:

实际上我有 1 个查询,但我无法将其转换为 CakePHP 查询格式。

$result = "select 
             * from esl_userresults
           where 
             esl_userresults.esl_songID = esl_lyrics.id 
             and esl_lyrics.song_name like '%".$esl_keyword."%'" ;

当我将此查询转换为 CakePHP 时,它会给出如下错误:

esl_userresults.esl_songID unknown column. 

【问题讨论】:

    标签: php sql cakephp


    【解决方案1】:

    您可以使用以下方法轻松地在蛋糕上运行直接 sql 查询: $this->Picture->query("SELECT * FROM Pictures LIMIT 2;"); (cake manual)

    或者尝试类似的方法:

        $result = Esl_Userresults->find('all' , array('conditions' => array(
                 "Esl_Userresults.esl_songID" => "Esl_Lyrics.id",
                 "Esl_Lyrics.song_name LIKE" => '%'.$esl_keyword.'%'),
                  'recursive' => 1)
                  );
    

    ..假设您已正确链接 Esl_Userresults 和 Esl_Lyrics 模型。

    【讨论】:

    【解决方案2】:

    使用可包含行为而不是递归。它可以让您控制到单个字段级别。现在在早期使用它,以后会成为第二天性。

    如果您对构建条件感到困惑,请在方法调用之外构建它。

    尽量避免使用双引号,除非您需要包含转义或解析的数据 - 它们速度较慢。

    $conditions = array(
        'EslUserresult.esl_songID' => 'EslLyric.id',
        'EslLyric.song_name LIKE' => '%'.$esl_keyword.'%'
                       )
    $this->EslUserresult->contain('EslLyric.text');
    $result = $this->EslUserresult->find('all',array('conditions'=>$conditions));
    

    【讨论】:

      【解决方案3】:

      您可以使用AppModelquery()函数来运行SQL查询。

      例如:$this->ModelName->query('SELECT * FROMtable'); 这将返回一个选定记录的数组。您可以传递简单查询以及复杂的连接查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 2016-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多