有一个ManyOnMany系统(3个表,projects
,users
,project_user
)
许多用户可以处理项目,而用户可以拥有许多项目。
当checkbox =选中时,它会将数据库发送到数据透视表。
现在我面临的问题是每次点击项目/用户ID都会发送到project_user
表。
当用户实际添加到项目中时,我需要检查复选框。
所以我怎么看:form :: checkbox有第三个函数检查或未检查,并且在我的controller.edit中有一个if / else语句我将以某种方式进行验证。请帮帮我!
刀片:
@foreach($users as $user)
<tr>
<td>
{{$user->firstname}} {{$user->middlename}} {{$user->lastname}}
</td>
<td>
{!! Form::checkbox('contribute['.$user->id.']', '1', $checkifinproject) !!}
</td>
</tr>
@endforeach
控制器:
public function edit($id, Project $project)
{
$users = User::all();
$project = $this->project->find($id);
if ($users == $project)
{
$checkifinproject = 'checked';
}
else {
}
return view('project.edit', ['project' => $project, 'id' => 'edit', 'project_id' => $id], compact('users'));
}
public function update(CreateProjectRequest $request)
{
if($request->get('contribute'))
{
foreach($request->get('contribute') as $k => $contribute)
{
if($contribute == 1)
{
$project = $this->project->find($request->project_id);
$project->users()->attach($k);
}
}
}
$project = $this->project->find($request->project_id);
$project->fill($request->input())->save();
return redirect('project');
}
型号:
用户
public function projects()
{
return $this->belongsToMany('App\Project', 'project_user', 'user_id', 'project_id');
}
项目
public function users()
{
return $this->belongsToMany('App\User', 'project_user', 'project_id', 'user_id');
}
答案 0 :(得分:0)
我认为问题是你正在比较两件永远不会相同的东西,并试图确定该用户是否属于该项目。最好的办法是用项目查询所有用户,当你遍历用户时,检查你正在修改的项目是用户所属的项目之一。
这可以这样做......
BorderLayout
public function edit($id, Project $project)
{
$users = User::with('projects')->get();
$project = $this->project->find($id);
return view('projects.edit', ['users' => $users, 'project' => $project]);
}