Laravel 多对多情况下的拉威尔关系问题

Laravel 多对多情况下的拉威尔关系问题,laravel,relation,Laravel,Relation,我在mysql中有三个表: 1-用户 2-项目 3-项目用户 关系有id、项目id和用户id 有两种模型:用户模型和项目模型 这些表格之间的关系如下所示 当一个项目创建时,可能需要为两个人定义一个项目 现在,我如何显示每个人的项目?假设您正确定义了您的关系,请 $users = User::with('projects')->get(); //show each user projects foreach($users as $user) { echo $user->pro

我在mysql中有三个表: 1-用户 2-项目 3-项目用户

关系有id、项目id和用户id 有两种模型:用户模型和项目模型 这些表格之间的关系如下所示 当一个项目创建时,可能需要为两个人定义一个项目
现在,我如何显示每个人的项目?

假设您正确定义了您的关系,请

$users = User::with('projects')->get();

//show each user projects
foreach($users as $user) {
    echo $user->projects;
}

//Getting project users 
$projects = Project::with('users')->get();
这将为您提供项目列表,在每个列表中,您可以看到哪个用户具有访问权限

更新

正在使用指定的用户\u id获取项目

$projects = Project::with(['users' => function ($query) use ($user_id) {
    $query->where('user_id', '=', $user_id);
}])->get();
新代码 或者尝试获取用户

$user = User::with('projects')->where('id', $user_id)->first();
或通过项目,通过用户id进行约束

$projects = Project::with('users')->whereHas('users', function ($query) use ($user_id) {
    $query->where($user_id);
})->get();

据我所知,您想根据
user\u id
查询
Project
。这是你怎么做的

 Project::with('users')->whereHas('users', function ($query) use ($user_id_array) {
        $query->whereIn('id',$user_id_array);
    })->get();
这将为您提供其
user\u id
来自
$user\u id\u array
的项目。如果你需要进一步的帮助,请告诉我

我解决问题的方法:

//save user_id
$user_id = $request->id;
//select in project_user where user_id = $user_id
$project_user = DB::table('project_user')->where('user_id', '=', $user_id)->get();
//create an empty array
$p_id = array();
//fill empty array with project_id
foreach($project_user as $pro) {
$p_id[] =  $pro->project_id;
}
//select code and id in project table where id = one of that [$p_id] array
$data = Project::select('code','id')->whereIn('id', $p_id)->get();
//return your data in json
return response()->json($data);

看,有三个表,有两个模型,一个模型用于用户,另一个模型用于项目,而project\u用户表没有任何模式。当我为两个用户定义一个项目时,我需要向这两个用户而不是其他用户显示该项目。此规则位于project_用户表中。当没有任何型号时,我如何选择它?这三张表是相关的,请检查我的更新。您可以获得一个用户并查看其所有项目。或者得到一个项目,并查看所有有权访问它的用户。抱歉,我检查了您的更新,但出现了一个问题:您知道我需要在项目用户表中获取具有特定用户id的项目。现在我有了该用户id,但在您的查询中,我应该如何使用它?有一个问题,我有用户id 2,我为他定义了两个项目,但当我使用您的查询时,显示所有项目给用户_id 2!!!我如何才能为您发送我的表的图片,因为我感到困惑,我试图解决它,但直到现在我还不能这样做。我用JSon发送用户Id:例如,我必须为用户Id 2进行投影。现在错误是未定义的变量:User\u Id\u array?我用JSon发送用户Id:例如,我必须为用户Id 2进行投影。现在,错误缺少参数2Illumb\Database\Query\Builder::where(),在中调用。。。