繁体   English   中英

Laravel 从“hasMany”关系中获取“belongsTo”关系

[英]Laravel Get 'belongsTo' relation from 'hasMany' relation

class Post {
    function category() {
        $this->belongsTo('Category');
    }
}
class User {
    function posts() {
        $this->hasMany('Post');
    }

    function categories() {
        //???
        $this->posts->category;
    }
}

我有看起来像这样的代码,我想知道如何访问用户对象上的“类别”并让它返回 Laravel 关系。

现有的关系方法“hasManyThrough”等似乎都不适合这个用例。

也许你可以换个角度看? 从类别开始并按用户过滤:

$userCategories = Category::whereHas('posts' function($query){
    $query->where('user_id', $userId);
})->get();

这将抓取用户发帖的所有类别。

另一种解决方案:

//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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM