Php Yii上的FindAll,字段名无效

Php Yii上的FindAll,字段名无效,php,mysql,yii,Php,Mysql,Yii,我正在使用yii1.1并尝试在3个表之间创建一个关系 到目前为止还不错,但当我试着在findAll里做一个where子句时,这些东西有点奇怪 我的模型叫做课程,它有很多模块,有很多视频。 在find all上,我只想将范围缩小到激活的课程、模块和视频 为此,我使用以下代码: $courses=Course::model()->with(array( 'module' => array('joinType'=>'INNER JOIN', 'toge

我正在使用yii1.1并尝试在3个表之间创建一个关系

到目前为止还不错,但当我试着在findAll里做一个where子句时,这些东西有点奇怪

我的模型叫做课程,它有很多模块,有很多视频。 在find all上,我只想将范围缩小到激活的课程、模块和视频

为此,我使用以下代码:

        $courses=Course::model()->with(array(
        'module' => array('joinType'=>'INNER JOIN', 'together'=>true),
        'module.video' => array('joinType'=>'INNER JOIN', 'together'=>true),
    ))->findAll("language_id=2 && ==> **course.activated=1** <== && module.activated=1 && video.activated=1");
但是,正如我在代码中看到的,Yii为课程创建了一个别名,别名是“t”

如果我改变findAll并使用t.activated而不是当然.activated,它就像一个符咒。 但是,这感觉不对,我如何使用course而不是yii在查询中使用的“t”别名?
如果我删除t,mysql当然会告诉我,由于我在yii上找到的大小,激活的t是不明确的,如下文本:

在关系AR查询中,主表的别名固定为t,而默认情况下,关系表的别名与对应的关系名相同


因此,正如SiZE所说,t始终是主表的别名。

由于我在yii上找到了SiZE,以下文本:

在关系AR查询中,主表的别名固定为t,而默认情况下,关系表的别名与对应的关系名相同


因此,正如SiZE所说的,t始终是主表的别名。

默认情况下,Yii将SQL查询中的主表别名为“t”,但这并不意味着您必须坚持使用它。您可以通过设置CDbCriteria的“alias”属性进行更改

$courses = Course::model()->with(array(
        'module' => array('joinType'=>'INNER JOIN', 'together'=>true),
        'module.video' => array('joinType'=>'INNER JOIN', 'together'=>true),
    ))->findAll(array('condition' => "language_id=2 && ==> **course.activated=1** <== && module.activated=1 && video.activated=1", 'alias' => 'course'));
$courses=Course::model()->带(数组)(
'module'=>array('joinType'=>'internaljoin','together'=>true),
'module.video'=>array('joinType'=>'internaljoin','together'=>true),

))->findAll(array('condition'=>“language_id=2&&&=>**course.activated=1**默认情况下,Yii将SQL查询中的主表别名为“t”,但这并不意味着您必须坚持使用它。您可以通过设置CDbCriteria的“alias”属性来更改它

$courses = Course::model()->with(array(
        'module' => array('joinType'=>'INNER JOIN', 'together'=>true),
        'module.video' => array('joinType'=>'INNER JOIN', 'together'=>true),
    ))->findAll(array('condition' => "language_id=2 && ==> **course.activated=1** <== && module.activated=1 && video.activated=1", 'alias' => 'course'));
$courses=Course::model()->带(数组)(
'module'=>array('joinType'=>'internaljoin','together'=>true),
'module.video'=>array('joinType'=>'internaljoin','together'=>true),

))->findAll(array('condition'=>“language_id=2&&&==>**course.activated=1**您应该对主activerecord模型使用t别名,我不知道,所以这是yii的约定?您应该对主activerecord模型使用t别名,我不知道,所以这是yii的约定?