class Post {
function category() {
$this->belongsTo('Category');
}
}
class User {
function posts() {
$this->hasMany('Post');
}
function categories() {
//???
$this->posts->category;
}
}
我的代码看起来像这样,我想知道如何访问用户对象上的“类别”并让它返回Laravel关系。
现有的关系方法“hasManyThrough”等似乎都不适合这个用例。
答案 0 :(得分:1)
也许你可以用另一种方式来看待它?从类别开始并按用户过滤:
$userCategories = Category::whereHas('posts' function($query){
$query->where('user_id', $userId);
})->get();
这将抓取用户发帖的所有类别。
答案 1 :(得分:1)
另一种解决方案:
//user model
public function getCategoriesAttribute()
{
return $this->posts->lists('category')->unique();
}
要限制查询,您可以更改帖子关系
//user model
function posts() {
$this->hasMany('Post')->with('category');
}
来源:http://softonsofa.com/laravel-querying-any-level-far-relations-with-simple-trick/