0
目前我在我的模型中有以下代码完美的工作,但我很困惑,因为我没有在相关表中指定字段之前指定关系名称。Yii2如何在相关表格中指定字段时不需要指定关系名称?
这是怎么回事?
下面的代码中使用Relarion的名字是:categoriesToPosts
搜索型号
$query = Posts::find();
$query->joinWith(['categoriesToPosts']);
if(!empty($params['cat'])){
$query->andFilterWhere(['posts_categories_id' => $params['cat']]);
}
我将有filterwhere部分的我喝了内认为有以下:
['categoriesToPosts.posts_categories_id' => $params['cat']]
如果该posts_categories_id字段名是在查询的唯一,我的意思是不是ambigous,那么在这种情况下,SQL引擎本身解析正确的名字.. – scaisEdge
@scaisEdge所以你说,如果我在两个表中都有一个同名的字段,那么我必须指定关系? –
是的,在这种情况下,如果您没有在andFilterWhere子句中指定表名称(不是关系名称),则会出现ambiguos列的错误。 – scaisEdge