2017-09-19 63 views
0

我使用Laravel 5.4,我试图让选择形式验证码:在Laravel更改初始选择值5.4

{{ Form::select('country', App\Countries::all()->pluck('en_title'), old('country', $user->country), array('class' => 'form-control')) }} 

是我收到的结果是这样的:

的问题是,我没有在数据库值0也有,所以我想从价值开始=“1”,如:

<select name="country" class="form-control"> 
    <option value="1">a</option> 
    <option value="2">b</option> 
    <option value="3">c</option> 
    <option value="4">d</option> 
    ... 
</select> 

什么我应该改变吗?我读过所有可能的东西,但是没有人试图用特定的功能来做到这一点,或者这个功能不可能做到这一点?

回答

1

您可以在拔出时指定密钥。在你的情况下,它会是

{{ Form::select('country', App\Countries::all()->pluck('en_title', 'id'), old('country', $user->country), array('class' => 'form-control')) }} 

这将导致数组如

[1 => 'United Kingdom', 2 => 'United States'] 

其中的关键是该国的ID。

除上述之外,您正在选择全部,然后从结果数据集中采集所需的数据。您可以使用pluck代替all,它为您创建一个选择并只抓取相关字段。例如

App\Countries::pluck('en_title', 'id') 

此外,在一个侧面说明你应该建立在你的控制器国家中列表,而不是在你的意见调用数据库。它会简化您的视图中的代码以及一般更好的做法

// Controller 
$countries = \App\Countries::pluck('en_title', 'id'); 

return view('viewname')->withCountries($countries); 

// View 

{{ Form::select('country', $countries, old('country', $user->country), ['class' => 'form-control']) }} 
+0

OMG谢谢!我只是想知道为什么我从来没有尝试过。 – Nicox

+0

我还有一个问题。我怎样才能用这个与另一个采用不同的数据库表采?例如,我有ID和国家表,但我正在采用用户表,其中字段国家是国家的ID,而不是名称。我怎么能把他们一起摘下来,显示国家名称而不是国家ID? – Nicox

+0

我不确定我明白你在问什么。我建议你问一个新问题,因为你可以更好地描述你想在评论部分之外做什么。我怀疑你需要在用户模型上创建一个国家关系,所以你使用'$ user-> country-> name',但是我不能完全确定这就是你的意思。 –