Laravel Eloquent将数据提取到自定义数组中

时间:2014-11-05 17:17:20

标签: php arrays json laravel eloquent

我已经尝试用Laravel寻找一种方法来做到这一点,我确信它不仅仅是有能力的(也许我一直用不正确的术语来搜索它)..

我正在尝试提取要在Laravels内置表单创建器中使用的表数据:

$clusters = Cluster::get(array('id','name'));

分为:

{{ Form::select('cluster', $clusters,Input::old('cluster'), array('id' => 'cluster')) }}

但是目前,我得到了一个带有JSON的下拉列表,如果我使用toArray()它不使用JSON数组中的ID号,它会应用新的ID号,然后将数据放入一个数组中: / p>

Badly formed array using toArray from JSON object

有人能指出我正确的方向从Eloquent提取正确形成数组吗? 我一直在使用这段代码感觉毫无意义:

$clust = array();
foreach($clusters as $key => $cl) {
  $clust[$cl['id']] = $cl['location'];
}

由于

2 个答案:

答案 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