Yii使用CActiveRecord - > with()方法和共享列名

时间:2012-07-18 18:05:53

标签: yii

我正在使用Yii CActiveRecord A - > with('B') - > findAll()方法,其中一个hte列与A和B共用,此列也是条件的一部分。

现在的问题是,在执行它时,我得到了SQL错误,因为mySQL不知道我是否要引用A.column或B.column。我查看执行的查询,在执行查询时,似乎yii将表命名为't',所以我在条件中附加了't'.columnname,一切正常。

我的问题是,如果我使用条件

,这种代码是否合适

'CURDATE()< = datetremoved =:已删除AND ispublic = 1 AND isopen = 1'

虽然我没有提到查询中的't'。 Yii自己重命名表。如果这似乎是一个很好的编码实践或者有更好的方法,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:1)

当您不使用“with()”时,您可以编写条件而不用列名添加别名“t”,但是当您使用“with()”查找关系数据时,您需要添加别名“ t“与基本模型条件。如果它们不是具有关系的公共列,则可以避免基础模型的别名。

Yii默认为基本模型“t”添加别名,因此您应该使用“t”和基本模型的列名。

相关问题