1

我在 Yii 中得到了这段代码:

 $comment = Comment::model()->with(array('issue'=> array(
               'condition'=>'project_id = 1')))->findAll(array( 
                      'order' => 't.create_time DESC', 'limit' => 2, ));

当我将“'limit'=>2”更改为“'limit'=>null”时,它通过了。

据我了解,如果我更改了这些值,等效查询将更改为:

SELECT tbl_comment . * , tbl_issue . *    FROM tbl_comment
LEFT JOIN tbl_issue ON tbl_issue.id = tbl_comment.issue_id WHERE tbl_issue.project_id = 1
LIMIT null

我在 mysql 命令行上尝试过,上面的查询没有通过 mysql,但是当我在 Yii 中使用上面的 CODE 时它确实通过了。

那么,你能告诉我为什么会发生这种冲突吗?谢谢你。

4

2 回答 2

0

当您执行 mysql 时,他们在 limit 中使用 null 作为“limit null”是没有意义的。所以当你设置

"limit"=>null 

在条件下,Yii 不将其包含在查询中,并且查询执行无限制。

请在运行时文件夹中有一个 at logs,mysql 查询记录在那里。在 application.log 文件中查找日志。

如果您的 mysql 查询没有记录在那里,那么更改您的配置文件 main.php 如下

// db configuration
'db'=>array(
  'connectionString'=>...
    'enableParamLogging'=>true,
    'enableProfiling'=>true,
),

// log configuration
'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'error, warning, trace, info, profile, packages.solr.ASolrConnection',
                ),
                // uncomment the following to show log messages on web pages
                 /*
                array(
                    'class'=>'CWebLogRoute',
                ),
                 */

            ),
        ),

现在您的查询将记录在那里。

于 2012-08-09T10:37:55.253 回答
0

尝试在 Comment 模型中创建一个新的关系,如下所示:

class Comment extends CActiveRecord
{
    ......

    public function relations()
    {
        return array(
            'issues'=>array(self::HAS_ONE, 'Issue', 'issue_id'),
        );
    }
}  

并这样称呼它:

 $comment = Comment::model()->with('issues');

无论如何,您的表格结构看起来有点奇怪:评论只有一个问题吗?

于 2012-08-09T08:51:16.210 回答