【问题标题】:Laravel Eloquent extract data into custom arrayLaravel Eloquent 将数据提取到自定义数组中
【发布时间】:2015-01-01 23:58:22
【问题描述】:

我已经尝试用 Laravel 寻找一种方法来做到这一点,而且我确信它的功能非常强大(也许我一直在使用不正确的术语搜索它)..

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

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

进入:

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

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

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

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

谢谢

【问题讨论】:

  • 发布返回数据(示例)。并发布所需的格式。

标签: php arrays json laravel eloquent


【解决方案1】:

使用lists(),它将返回一个列值数组以及它们的可选标识符。

// Controller
$clusters = Cluster::lists('name', 'id');

// View
{{ Form::select('cluster', $clusters) }}

lists() 是一个Query Builder method。 Eloquent 模型可以使用所有 Query Builder 方法。


仅供参考:使用表单助手时,如果旧输入存在,它将自动填充,因此您无需指定它。另外,helper 会根据元素的名称自动生成一个 ID,这样也可以排除。

【讨论】:

  • 谢谢,我知道有一个简单的方法。为旧输入和 ID 上的额外指针干杯。我真的很喜欢 Laravel 的所有小演员/帮手!编辑:由于我将视野缩小到 Eloquent 文档,我一定没有看到它 - 也感谢您指出查询构建器方法也都可用
【解决方案2】:

这是使用控制器获取数据并创建视图,然后使用视图制作表单的组合。

在您的控制器中:

$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

希望对您的问题有所了解!

编辑 - 显然不能拼写“Clusters”,哈哈

【讨论】:

  • 完全知道你从哪里来,但我只是相信 Laravel 肯定有一些东西可以克服这个问题,我相信我已经通过使用 ->get(array(' id','name')) 等,但是当我这样做时,它会变成数组中的数组..
猜你喜欢
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2013-07-19
  • 2021-12-07
  • 2019-01-28
相关资源
最近更新 更多