我想在表employees中保存一个部门的名称,在选择组件中它显示名称但保存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
答案 0 :(得分:1)
选择的答案是正确的,但没有提供解释。
问题是您创建了LaravelCollective Form :: select,因此在随后的请求中发送了整数id
。您可以通过查看呈现的刀片HTML中Form元素的来源来验证这一点。当前看起来像:
<select class="form-control" name="nombre_dep">
<option selected="selected" value="">Asignar departamento</option>
<option value="1">Production</option>
<option value="2">Department 2</option>
<option value="3">Department 3</option>
</select>
因此,在选择了(例如)选项1的情况下触发操作时,您生成的请求仅包含"nombre_dep" => "1"
。
您需要使用所需的选项值来构造表单。喜欢
<select class="form-control" name="nombre_dep">
<option selected="selected" value="">Asignar departamento</option>
<option value="Production">Production</option>
<option value="Department 2">Department 2</option>
<option value="Department 3">Department 3</option>
</select>
为此,请从您的控制器传递$departamentos
变量,如下所示:
$departamentos = array('Production' => 'Production', 'Department 2' => 'Department 2', 'Department 3' => 'Department 3');
和一种简单的方法(如答案https://stackoverflow.com/a/56673741/8093282所述):
$departamentos = departamento::pluck('nombre_dep', 'nombre_dep');
答案 1 :(得分:0)
执行key
参数(第二个参数)中指定的抽取操作,您要从中获取{{1}的field
属性中要使用的值的value
}}。
select
然后,当您将$departamentos = departamento::pluck('nombre_dep', 'nombre_dep');
数组传递给Laravel集合$departamentos
时,它将为每个数组元素创建一个select()
元素,并使用数组<option>
作为{{ 1}}属性和数组key
作为选项标签内容。
value