我已经尝试用Laravel寻找一种方法来做到这一点,我确信它不仅仅是有能力的(也许我一直用不正确的术语来搜索它)..
我正在尝试提取要在Laravels内置表单创建器中使用的表数据:
$clusters = Cluster::get(array('id','name'));
分为:
{{ Form::select('cluster', $clusters,Input::old('cluster'), array('id' => 'cluster')) }}
但是目前,我得到了一个带有JSON的下拉列表,如果我使用toArray()它不使用JSON数组中的ID号,它会应用新的ID号,然后将数据放入一个数组中: / p>
有人能指出我正确的方向从Eloquent提取正确形成数组吗? 我一直在使用这段代码感觉毫无意义:
$clust = array();
foreach($clusters as $key => $cl) {
$clust[$cl['id']] = $cl['location'];
}
由于
答案 0 :(得分:6)
使用lists()
,它将返回一列列值,并为它们提供可选的标识符。
// Controller
$clusters = Cluster::lists('name', 'id');
// View
{{ Form::select('cluster', $clusters) }}
lists()
是Query Builder method。所有查询构建器方法都可用于Eloquent模型。
仅供参考:当使用表单助手时,它会自动填充旧输入(如果存在),因此您不需要指定它。此外,帮助程序将自动生成基于元素名称的ID,因此也可以将其排除。
答案 1 :(得分:0)
这是使用控制器获取数据并创建视图,然后使用视图制作表单的组合。
在您的控制器中:
$clusters = Cluster::select('id', 'name')->get(); // Or however you pull it
// Transfer that data to a view, example views/clusters.blade.php
return View::make('clusters')->with(array('clusters' => $clusters));
然后在您的视图中,使用$clusters
生成您需要的任何表单选项。例如,下拉列表可以这样:
// Using HTML tags
<select class="form-control" name="cluster">
@foreach($clusters AS $cluster)
<option value="{{ $cluster->id }}" {{ (Input::old('cluster') == $cluster->name) ? "selected":"" }}> {{ $cluster->name }} </option>
@endforeach
</select>
// Using Laravel Form Builder
{{ Form::select('cluster', $clusters) }} // Not sure how you'd handle Input::old
希望能够对您的问题有所了解!
编辑 - 无法拼写&#34;群集&#34;显然是lol