根据数据透视表返回选中的复选框

trh*_*h88 2 php laravel eloquent laravel-4

这个问题是关于Laravel和PHP的.

我正在构建一个表单,允许用户(玩家)使用复选框分配给团队/取消分配.

许多用户可以属于许多团队.我有一个数据透视表team_user来管理多对多关系.

我无法根据数据透视表中是否存在关联来填充复选框.

到目前为止,我将它们放在两个单独的"位"中,您可以在下面看到:

我的控制器:

$users_checked = $team->users()->get();
$users = User::all();
return View::make('team/addplayers', compact('users', 'team', 'users_checked'));
Run Code Online (Sandbox Code Playgroud)

我的看法:

@foreach ($users_checked as $user_checked)
    <p>
    {{ Form::checkbox('player[]', $user_checked->id, true) }}
    {{ Form::label('email', $user_checked->email) }}
    </p>
@endforeach

@foreach($users as $user)
    <p>
    {{ Form::checkbox('player[]', $user->id ) }}
    {{ Form::label('email', $user->email) }}
    </p>
@endforeach
Run Code Online (Sandbox Code Playgroud)

将这些组合成一个列表的最明智的方法是什么,如果关联存在于枢轴中,则勾选复选框,如果不存在则不勾选?

非常感谢您的帮助!

trh*_*h88 6

答案让我走上正轨,谢谢.我的实际解决方案如下:

在我的控制器中:

public function showAddPlayer(Team $team)
{
    $users = User::all();
    return View::make('team/addplayers', compact('users', 'team'));
}
Run Code Online (Sandbox Code Playgroud)

在我看来:

@foreach ($users as $user)
    <p>
        {{ Form::checkbox('player[]', $user->id, $team->users->contains($user->id)) }}
        {{ Form::label('email', $user->email) }}
    </p>
@endforeach
Run Code Online (Sandbox Code Playgroud)