0

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

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

我的问题是这种代码是否适合我使用条件为

'CURDATE() <= dateAND t. removed= :删除 AND ispublic= 1 AND isopen= 1'

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

谢谢。

4

1 回答 1

1

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

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

于 2012-07-19T05:22:20.927 回答