在 laravel 集合中保存 select 组件的名称而不是 ID
Save name instead of id from select component in laravel collective
我想在table员工中保存部门名称,在select组件中它显示名称但保存id,所以我认为问题在于它。
这是 select 组件:
{{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
而不是 1
,这可能是部门的 ID
执行在 key
参数(第二个参数)中指定的 pluck,field
您希望从中获取要在 value
属性中使用的值 select
.
$departamentos = departamento::pluck('nombre_dep', 'nombre_dep');
然后当您将 $departamentos
数组传递给 Laravel 集体 select()
时,它会为每个数组元素创建一个 <option>
元素,使用数组 key
作为 value
属性和数组 value
作为选项标签内容。
{{ Form::select('nombre_dep', $departamentos) }}
所选答案正确,但未提供任何解释。
问题在于您创建了 LaravelCollective Form::select,因此整数 id
会在随后的请求中发送。您可以通过查看呈现的 blade 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>
so when the action is triggered with (say) option 1 selected, your generated request simply has "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://whosebug.com/a/56673741/8093282 所述):
$departamentos = departamento::pluck('nombre_dep', 'nombre_dep');
我想在table员工中保存部门名称,在select组件中它显示名称但保存id,所以我认为问题在于它。
这是 select 组件:
{{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
而不是 1
,这可能是部门的 ID
执行在 key
参数(第二个参数)中指定的 pluck,field
您希望从中获取要在 value
属性中使用的值 select
.
$departamentos = departamento::pluck('nombre_dep', 'nombre_dep');
然后当您将 $departamentos
数组传递给 Laravel 集体 select()
时,它会为每个数组元素创建一个 <option>
元素,使用数组 key
作为 value
属性和数组 value
作为选项标签内容。
{{ Form::select('nombre_dep', $departamentos) }}
所选答案正确,但未提供任何解释。
问题在于您创建了 LaravelCollective Form::select,因此整数 id
会在随后的请求中发送。您可以通过查看呈现的 blade 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>
so when the action is triggered with (say) option 1 selected, your generated request simply has "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://whosebug.com/a/56673741/8093282 所述):
$departamentos = departamento::pluck('nombre_dep', 'nombre_dep');