【发布时间】:2017-10-23 18:08:10
【问题描述】:
我想从数据库中获取下拉选项值和名称,为此我的控制器代码是
$roles = Role::pluck('role','user_id');
return view('users.add_role',compact('roles'));
要从下拉列表中获取此数据,我的视图文件代码是
<select name="role" class="form-control" >
@foreach($roles as $role)
<option value="{{ $role->user_id }} "> {{ $role->role }} </option>
@endforeach
</select>
但它说错误
Trying to get property of non-object (View: C:\xampp\htdocs\auth2\resources\views\users\add_role.blade.php)
如果我只使用
<select name="role" class="form-control" >
@foreach($roles as $role)
<option value="{{ $role }} "> {{ $role }} </option>
@endforeach
</select>
然后它显示表的角色列,但它不将选项值传递给数据库。那么从数据库生成选项值和名称的正确方法是什么?
【问题讨论】:
-
dd($roles) 并显示输出
-
刚刚检查,它只传递角色列数据,而不是user_id列
-
Pluck 仅返回 1 列。如果传入 2 个变量,它将更改数组键的名称。 (laravel.com/docs/5.4/collections#method-pluck)
-
@Masum 分享您的角色表结构。我怀疑你的角色表上有一个 user_id 列。由于用户角色大多存储在数据透视表中。
-
是的,你说得对,在这个项目中我没有使用数据透视表,user_id 字段在角色表下
标签: php database forms laravel dropdown