保存laravel集合中选择组件的名称而不是id

保存laravel集合中选择组件的名称而不是id,laravel,html-select,laravelcollective,Laravel,Html Select,Laravelcollective,我想在employees表中保存一个部门的名称,在select组件中,它显示名称,但保存id,因此我认为问题在于它 这是选择组件: {{Form::select('nombre_dep', $departamentos, null, array('class'=>'form-control', 'placeholder'=>'Asignar departamento'))}} 在我的控制器中,我有一个用于返回视图的命令: $departamentos = departamento:

我想在employees表中保存一个部门的名称,在select组件中,它显示名称,但保存id,因此我认为问题在于它

这是选择组件:

{{Form::select('nombre_dep', $departamentos, null, array('class'=>'form-control', 'placeholder'=>'Asignar departamento'))}}
在我的控制器中,我有一个用于返回视图的命令:

$departamentos = departamento::pluck('nombre_dep', 'id');
在员工模型中,我有以下关系:

public function departamentos(){
        return $this->belongsTo('App\departamentos');
}

我希望保存在该字段中,例如:
production
而不是部门id的
1

执行
参数(第二个参数)中的Pull指定,
字段
,您要从中获取要在
选择的
属性的
中使用的值

$departamentos = departamento::pluck('nombre_dep', 'nombre_dep');
然后,当您将
$departmentos
数组传递给Laravel集合
select()
时,它将为每个数组元素创建一个
元素,使用数组
键作为
属性,使用数组
值作为选项标记内容

{{ Form::select('nombre_dep', $departamentos) }}

所选答案是正确的,但不提供任何解释

问题是您需要创建LaravelCollective表单::select,以便在随后的请求中发送整数
id
。您可以通过查看呈现的blade html中表单元素的源来验证这一点。目前的情况如下:


亚洲部
生产
第二部门
第三部门
因此,当在选择(比如)选项1的情况下触发该操作时,您生成的请求只有
“nombre_dep”=>“1”

您需要使用所需的选项值来构造表单。像


亚洲部
生产
第二部门
第三部门
要执行此操作,请按如下方式从控制器中传递
$departmentos
变量:

$departmentos=array('Production'=>'Production','Department 2'=>'Department 2','Department 3'=>'Department 3');
这是一个简单的方法(如答案所述):

$departmentos=departmento::pull('nombre_dep','nombre_dep');