如何做关联查询? [ 2.0 版本 ]
控制器中的
public function actionList(){
$list = Article::find()
->joinWith('articleCategory')
->where(['category_id'=>'id'])
//->orderBy('id DESC')
->all();
//$sql = 'SELECT a.*,c.category as category FROM yii2_article a,yii2_article_category c WHERE a.category_id=c.id';
var_dump($list);die();
return $this->render('list',[
'list'=>$list
]);
}
model中
public function getArticleCategory(){
return $this->hasOne(ArticleCategory::className(),['id'=>'category_id'])->asArray();
}
我想要查出文章的栏目信息,怎么写呢?
共 5 个回答
-
return19931112 回答于 2016-07-27 15:13 举报
model里面关系都定义好了,干嘛还要在控制器里面写joinwith呢,如果ArticleCategory这个表里面有个字段是name,应该可以直接在视图层里面写'articleCategory.name'就可以了啊
共 1 条回复 -
$query = (new Query())->select('a.*,c.category as category') ->form('yii2_article as a') ->leftJoin('yii2_article_category as c', 'a.category_id = c.id') ->all();
共 1 条回复 -
zhoupenghui 回答于 2016-07-29 09:59 举报
这样写,试一试:
控制器中: public function actionList(){ $list = Article::find() ->joinWith([ 'articleCategory'=>function($query){ $query->select(['id','category'])}, ])->asArray() ->all(); var_dump($list);die(); return $this->render('list',[ 'list'=>$list ]); } 模型中: public function getArticleCategory(){ return $this->hasOne(ArticleCategory::className(),['id'=>'category_id']); }
moka同学 杭州
注册时间:2016-03-31
最后登录:2020-03-14
在线时长:17小时46分
最后登录:2020-03-14
在线时长:17小时46分
- 粉丝8
- 金钱930
- 威望10
- 积分1200