我尝试从数据库加载我的选项,我的值设置正确但ID加载不正确:
控制器:
$country_list = contry::lists('name','id');
$country_list = array_merge(array('0' => 'Please Select...'), $country_list->toArray());
查看:
{!! Form::select('country_id',$country_list,null,['class'=>'form-control']) !!}
数据库:
"1"=>"USA"
"2"=>"IRAN"
--> "5"=>"ENGLAND" <--
在浏览器中加载:
"0"=>"Please Select"
"1"=>"USA"
"2"=>"IRAN"
--> "3"=>"ENGLAND" <--
检查元素结果:
<select class="form-control" name="country_id">
<option value="0" selected="selected">Please Select...</option>
<option value="1">USA</option>
<option value="2">IRAN</option>
<option value="3">ENGLAND</option
</select>
我需要与数据库
中的id列相同的选项ID答案 0 :(得分:1)
array_merge将覆盖该键,因此使用加号(+)组合数组。我认为这将解决您的问题:
$country_list = array('0' => 'Please Select...') + $country_list->toArray();
答案 1 :(得分:1)
你在这里错误地使用数组合并:
$country_list = array_merge(array('0' => 'Please Select...'), $country_list->toArray());
你应该这样做:
$country_list = array('0' => 'Please Select...') + $country_list->toArray();
不要覆盖键。
答案 2 :(得分:1)
array_merge重新索引合并的数组,这就是你的问题。
http://php.net/manual/en/function.array-merge.php “带有数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号。”
避免使用
$country_list = [0 => 'Please Select...'] + $country_list->toArray();
或者只是:
$country_list = contry::lists('name','id')->toArray();
$country_list[0] = 'Please Select...';