在尝试执行不相等查询时出现Laravent Eloquent错误



在我的数据库中,我有一个roles

表有三个角色:Admin、Regional Admin和User

从我的控制器,我试图选择角色,其中角色名称不等于"Admin"

以下是我的eloquent
$roles = Role::pluck('name','name')->where('name','<>','Admin')->get();

但是这会给我一个错误,说

Too few arguments to function IlluminateSupportCollection::get(), 0 passed..

当我把eloquent改成

$roles = Role::pluck('name','name')->where('name','<>','Admin')->all();

它可以工作,但它会给我所有的记录,包括'Admin'

为了执行下面的查询,

我需要修复哪里?
SELECT * FROM `roles` WHERE name <> 'Admin'

我在刀片中使用这些值作为下拉选项

{{ Form::select('roles',array_merge(['' => 'Veuillez sélectionner un rôle'],  $roles ), Request::old('Roles'),array('class' => 'form-control txt_txt')) }}

嗯,我会尝试使用!=而不是<>,否则看起来很好:)

$roles = Role::pluck('name','name')->where('name','!=','Admin')->all();

**根据问题的变化进行编辑

// Get the name of all Roles except 'Admin' as array
$names = Role::where('name','<>','Admin')->pluck('name')->toArray();
// use $names as keys and values
$roles = array_combine($names, $names);

$roles可以在array_merge(['' => 'Veuillez sélectionner un rôle'], $roles )中作为叶片中使用的值。

最新更新