Php Laravel 5.1,其中多对多关系中的条件

Php Laravel 5.1,其中多对多关系中的条件,php,mysql,laravel-5,eloquent,Php,Mysql,Laravel 5,Eloquent,你好,我是拉雷维尔的新手,我有以下型号: organizations ----------------- id name public function users() { return $this->belongsToMany( 'App\User' ); } users ----------------- id name organization_user ------------------ user_id organization_id 组织和用户之间存在多对多关系

你好,我是拉雷维尔的新手,我有以下型号:

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);

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

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

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

可能这会有所帮助

我认为下面的代码可能会对您有所帮助

$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);

我认为您需要将此添加到您的
用户模型中

public function organizations()
{
    return $this->belongsToMany('App\Organization');
}
然后就是这样简单的事情

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

首先,在模型中添加关系:

User.php

公共职能机构()
{
返回$this->hasMany(组织\用户::类);
}

公共职能机构()
{
返回$this->hasManyThrough(组织::类,组织\用户::类);
}
我推荐第二种。有关更多信息,请参见以下内容:


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

Hello@Jitendra谢谢您的快速回复。我尝试了您的解决方案,但出现了以下错误:SQLSTATE[42S22]:未找到列:1054“where子句”(SQL:选择count(*)中的未知列“pivot”作为来自
组织的聚合,其中
pivot
=user\u id)尝试在用户模型中添加与
$user->organization()相反的关系,我认为这是最简单的处理方法。