【发布时间】:2017-06-07 22:06:12
【问题描述】:
我正在使用 laravel 5.3,在 Eloquent 模型查询方面需要一些帮助。我有三个模型(UserDetails、Categories、Articles)。我在 UserDetails->Categories (belongstoMany) 和 Categories->Articles (belongstoMany) 之间有关系,它们运作良好。但是,我将如何获取 Userdetails->Categories->Articles 之间的关系数据。
每个单独的关系都运行良好,即 Userdetails::find(1)->categories 和 Categories::find(1)->Articles。
我觉得范围可能是答案,但当我尝试时它们似乎不起作用。
模型中的关系
UserDetails.php
public function Categories(){
return $this->belongstoMany('App\Categories', 'users_cats', 'user_id','cat_id');
}
Categories.php
public function articles(){
return $this->belongsToMany('App\Article', 'article_categories', 'categoryID', 'articleID');
}
我研究了 HasManyThrough 函数,但我再次遇到了实现它的问题,据我所知应该是
return $this->hasManyThrough('App\Article', 'App\Categories', TertiaryForeignKey, FinalForeignKey, LocalForeignKey);
我的表设置为
articles_categories 数据透视表
articleID - 文章的主键
categoryID – 类别的主键
users_cats 数据透视表
user_id - userdetails 的主键
cat_id - 类别的主键
基于此,hasManyThrough 应该如下所示?
public function articles(){
return $this->hasManyThrough('App\Article', 'App\Categories', 'user_id', 'articleID', 'id');
}
但是这会返回错误 未找到列:1054“字段列表”中的未知列“categories.user_id”
【问题讨论】: