如何从 Laravel 5.1 中的数据库加载选项的 ID

How to load option's id from database in Laravel 5.1

我试图从数据库加载我的选项,我的值设置正确但加载的 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

array_merge 将覆盖键,因此使用加号 (+) 组合数组。我认为它会解决您的问题:

$country_list = array('0' => 'Please Select...') + $country_list->toArray();

你在数组合并时弄错了:

$country_list = array_merge(array('0' => 'Please Select...'), $country_list->toArray());

你应该这样做:

$country_list = array('0' => 'Please Select...') + $country_list->toArray();

不要覆盖键。

array_merge 重新索引合并后的数组,所以这是你的问题。

http://php.net/manual/en/function.array-merge.php "Values in the input array with numeric keys will be renumbered with incrementing keys starting from zero in the result array."

避免使用

$country_list = [0 => 'Please Select...'] + $country_list->toArray();

或者只是:

$country_list = contry::lists('name','id')->toArray();
$country_list[0] = 'Please Select...';