我正在使用Yii CActiveRecord A - > with('B') - > findAll()方法,其中一个hte列与A和B共用,此列也是条件的一部分。
现在的问题是,在执行它时,我得到了SQL错误,因为mySQL不知道我是否要引用A.column或B.column。我查看执行的查询,在执行查询时,似乎yii将表命名为't',所以我在条件中附加了't'.columnname,一切正常。
我的问题是,如果我使用条件
,这种代码是否合适'CURDATE()< = date
和t
。removed
=:已删除AND ispublic
= 1 AND isopen
= 1'
虽然我没有提到查询中的't'。 Yii自己重命名表。如果这似乎是一个很好的编码实践或者有更好的方法,请告诉我。
感谢。
答案 0 :(得分:1)
当您不使用“with()”时,您可以编写条件而不用列名添加别名“t”,但是当您使用“with()”查找关系数据时,您需要添加别名“ t“与基本模型条件。如果它们不是具有关系的公共列,则可以避免基础模型的别名。
Yii默认为基本模型“t”添加别名,因此您应该使用“t”和基本模型的列名。