【发布时间】:2017-07-18 19:33:51
【问题描述】:
我在 mysql 中有三个表: 1-用户 table of users 2个项目 table of project 3-project_user
关系有id和project_id和user_id
有两个模型:用户和项目 这些表之间的关系是belongsToMany 当一个项目创建时,一个项目可能为两个人定义 现在如何展示每个人的项目?
【问题讨论】:
我在 mysql 中有三个表: 1-用户 table of users 2个项目 table of project 3-project_user
有两个模型:用户和项目 这些表之间的关系是belongsToMany 当一个项目创建时,一个项目可能为两个人定义 现在如何展示每个人的项目?
【问题讨论】:
假设你正确定义了你的关系,那么做
$users = User::with('projects')->get();
//show each user projects
foreach($users as $user) {
echo $user->projects;
}
//Getting project users
$projects = Project::with('users')->get();
这将为您提供项目列表,在每个列表中您可以看到哪个用户有访问权限。
更新
使用指定的 user_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();
或通过项目,由 user_id 限制
$projects = Project::with('users')->whereHas('users', function ($query) use ($user_id) {
$query->where($user_id);
})->get();
【讨论】:
据我了解您的问题,您想按照user_id 查询Project。这是你如何做到的。
Project::with('users')->whereHas('users', function ($query) use ($user_id_array) {
$query->whereIn('id',$user_id_array);
})->get();
这将为您提供user_id 来自$user_id_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);
【讨论】: