如何用数据库中的数据填充复选框?

时间:2018-11-14 09:16:46

标签: php mysql database laravel

我找不到用数据库中的数据填充复选框的方法。我有角色表(id和角色名称),用户表(id,名称,姓氏等)和数据透视表(user_id,role_id)。如何填充显示用户是admin / user还是两者兼有的

谢谢。

控制器

{
        $total_row = $data->count();
        $output = "";
        if ($total_row > 0) {
            foreach ($data as $row) {
                $roleNames = '';
                foreach (Role::all() as $roles1) {
                    $roleNames .= $roles1->role != null ? $roles1->role.' '.'<input type="checkbox" class="checkbox" id="checkboxId">'.' ' : '';
                    // if ($roles1 = id(1)) {
                    //     return '<input type="checkbox" class="checkbox" id="checkboxId" checked>';
                    // }
                }

            $output .= '
                <tr>
                    <td>'.$row->surname.'</td>
                    <td>'.$row->name.'</td>
                    <td>'.$row->phone.'</td>
                    <td>'.$roleNames.'</td>
                    <td><button type="button" id="rowId" class="remove-button btn btn-danger" data-id="'.$row->id.'">
                    <div class="close">&#120;</div>
                    </button></td>
                </tr>
            ';
        }
    } else {
        $output = '
            <tr>
                <td align="center" colspan="5">Nema podataka</td>
            </tr>
        ';
    }
    return array(
        'table_data'  => $output,
        'total_data'  => $total_row,
    );
}

1 个答案:

答案 0 :(得分:0)

最好使用View。

您可以尝试以下方法:

$roles = Role::all();

foreach ($data as $row) {
    $roleNames = '';

    $rowRoles = $row->roles->pluck('id');

    foreach($roles as $role){
      $roleNames .= '<input type="checkbox" name="roles[]" value="' . $role->id . '" ' . (in_array($role->id, $rowRoles) ? 'checked' : '') . '/> ' . $role->name;
    }
}

您需要在用户模型中具有belongsToMany关系“角色”。

public function roles()
{
   return $this->belongsToMany('\App\Role', 'pivot_table_name');
}