Laravel 5检查数据透视数据是否已存在于数据库中

时间:2015-05-20 13:04:45

标签: php laravel checkbox

有一个ManyOnMany系统(3个表,projectsusersproject_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');
}

1 个答案:

答案 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]);
}