胖纸囧 2015-04-29 16:19:42 11113次浏览 6条评论 15 11 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啦。

觉得很赞
您需要登录后才可以评论。登录 | 立即注册