[胖纸囧]Yii2关联自身查询 [ 2.0 版本 ]
当前有个category表,里面有字段cate_id,title,parent_id等字段。通过parent_id来判断层级,当我们要取出一级分类,并且把二级分类给关联出来的时候,我们需要关联自身,在Yii2中如果用常规的关联会报字段混淆错误。所以我们使用的时候加入了Yii2 AR的别名。
CategoryModel代码段:
// 关联获取子分类
public function getSubCategory()
{
return $this->hasMany(Category::className(), ['parent_id' => 'cate_id'])->from(Category::tableName().' cate');// from设置别名,尽量避免手写表名称,会要求手动添加表前缀
}
CategoryController代码段:
$result = Category::find()->where([ Category::tableName().'.parent_id'=>0])->joinWith('subCategory')->all();// 这里的where条件需要加入主表表明来区别所属表
那这样子就OK啦。
胖纸囧 四川成都
注册时间:2013-07-17
最后登录:2017-12-27
在线时长:221小时19分
最后登录:2017-12-27
在线时长:221小时19分
- 粉丝185
- 金钱21126
- 威望150
- 积分24836
共 6 条评论
胖纸哥V587,崇拜你。
版本设置错了 你设置的1.0
joinwith第二张表后,在views里该怎样表示原表和连接表的值呢?
啥?字段不一样的啊。
6啊,原来设置了别名,试了好几遍都报错了....
我index页面直接是写subCategory.cate_name 这样写的。在search 里面怎么写??
joinWith()
连接后会生成新的with
对象,很棒,收藏