【发布时间】:2018-04-08 22:47:52
【问题描述】:
我使用连接进行查询(使用 \yii\db\ActiveQuery),“where”子句中的某些字段变得模棱两可。在列名之前是否有一种不错和简短的方法来指定当前模型的 (ActiveRecord) 表的名称(ActiveQuery 是从哪个表中实例化的)?所以我可以在所有情况下一直使用它并使其简短。
不喜欢一直这样做(尤其是在没有连接的地方,但只是为了能够在需要时将这些方法与连接一起使用):
// in the ActiveQuery method initialized from the model with tableName "company"
$this->andWhere(['{{%company}}.`company_id`' => $id]);
使“命名范围”适用于某些带有连接的情况..
另外,在这种情况下 [[..]] 是什么意思,例如:
$this->andWhere(['[[company_id]]' => $id]);
似乎无法解决上述问题。
提前谢谢!
附:抱歉,没有足够的声誉来创建标签 yii2-active-query
【问题讨论】:
-
我相信 ActiveQuery 类中不存在它,至少根据文档。如果需要,您实际上可以在 where 语句中使用
tablename.fieldname。 -
你可以使用 andWhere(['u.
company_id' => $id]);其中 u 是原始表,为了便于阅读,尽管我会继续使用 {{%company}}
标签: yii2