如何使用laravel 5中的Eloquent从其数据透视表额外字段获取表的记录

时间:2016-09-12 11:54:42

标签: laravel

我在laravel中有一个Web应用程序,我有3个表:

  1. 用户

  2. 类别

  3. 以及名为:subscriptions

  4. 的数据透视表 在数据透视表中的

    我有以下字段:UserID,CategoryID,parent_id

    UserID和CatgeoryID从“用户”和“类别”表的ID中保存, parent_id是额外字段

    我的模特是这样的:

    用户表型号:

    public function categories(){
            return $this->belongsToMany('App\Categories','subscriptions','UserID','CategoryID')->withPivot('parent_id');
        }
    

    分类表型号:

    public function users(){
            return $this->belongsToMany('App\User','subscriptions','CategoryID','UserID')->withPivot('parent_id');
        }
    

    现在我的问题是,我想通过额外的数据透视字段'parent_id' 访问用户表记录。我想找到例如'parent_id'= 3的用户。

    我想将记录作为用户对象返回,尝试此代码没有帮助:

    $category = new Categories();
    $users= $category ->users()->where('parent_id','=',3)->get();
    

    如何通过使用雄辩来访问这些用户?

2 个答案:

答案 0 :(得分:1)

您可以将where替换为wherePivot

示例:

$category->users()->wherePivot('parent_id','=',3)->get();

答案 1 :(得分:0)

也许这对你想要达到的最终结果有用吗?

$category = new Categories();
$category = $category->whereHas('users', function ($query) {
    $query->where('parent_id', '=', 3);
})->get();

修改

获取用户:

$category = new Categories();
$users = $category->whereHas('users', function ($query) {
    $query->where('parent_id', '=', 3);
})->get()->users;