我的模型中定义了两个关系到同一个表
public function getCountry(){
return $this->hasOne(Country::className(),['country_id' => 'country_id']);
}
public function getCurrency(){
return $this->hasOne(Country::className(), ['country_id' => 'currency']);
}
我想在我的查询中加入这两个关系。下面的代码显示错误。
Country::find()->joinWith(['country','currency'])->....
也试过这个
Country::find()->joinWith(['country','currency as cur'])->....
如何为第二关系指定别名??
答案 0 :(得分:5)
您可以为特定关系提供别名,如下所示:
->joinWith([
'country',
'currency' => function ($q) {
$q->from(Country::tableName() . ' cur');
}
])
请参阅此主题以获取更多详细信息 - https://github.com/yiisoft/yii2/issues/2377#issuecomment-34573765
答案 1 :(得分:2)
自Yii 2.0.7起:
->joinWith(['country', 'currency cur'])... // Note we dont use `as`, just an space
来源:Yii2 Guide
答案 2 :(得分:0)
没有关系
Category::find()
->select('c1.*')
->from('category c0')
->innerJoin('category as c1', 'c1.parent_id = c0.id')
->where(['c0.slug' => $parent]);