【发布时间】:2015-08-01 18:04:19
【问题描述】:
有一个 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');
}
【问题讨论】:
-
你如何定义雄辩的关系。您可以使用
has或whereHas内置函数