Laravel 5.1多对多条件中的条件

时间:2016-03-15 06:43:41

标签: php mysql laravel-5 eloquent

您好我在Laravel非常新,而且我有以下型号:

organizations
-----------------
id
name

public function users()
{
    return $this->belongsToMany( 'App\User' );
}

users
-----------------
id
name

organization_user
------------------
user_id
organization_id

组织与用户之间存在多对多的关系。现在我想找到用户所属的组织。如何在关系中为用户添加where条件。

例如,我想找到登录用户的所有组织。我正在尝试以下方法:

$organisations       = Organisation::where('user_id' , '=' , $user->id)->paginate(10);

但它不起作用,因为user_id在我的数据透视表中。请提前帮助和谢谢。

4 个答案:

答案 0 :(得分:1)

我认为你需要在你的代码中使用wherePivot()函数,比如

$organisations       = Organisation::with(array('user'=> function($query) use ($user){ 
                                $query->wherePivot('user_id' , '=' , $user->id);     
                            }) )->paginate(10);

可能这可以帮助

答案 1 :(得分:0)

我认为下面的代码可以帮助你

$organisations = Illuminate\Support\Facades\DB::table('organizations')
    ->join('organization_user', 'organizations.id', '=', 'organization_user.organization_id')
    ->join('users', 'users.id', '=', 'organization_user.user_id')
    ->where('users.id', '=', $user->id)
    ->paginate(10);

答案 2 :(得分:0)

我认为您需要将此添加到您的User Model

public function organizations()
{
    return $this->belongsToMany('App\Organization');
}

然后将像这样简单

$organizations = Auth()->user()->organizations; 

答案 3 :(得分:0)

首先在模型中添加关系:

User.php

public function organizations()
{
return $this->hasMany(organization_user::class);
}

public function organizations()
{
return $this->hasManyThrough(organizations::class,organization_user::class);
}

我推荐第二个。有关更多信息,请遵循以下步骤:

Laravel hasManyThrough

请注意,对组织模型使用相同的想法来创建关系