Я пытался найти способ сделать это с Laravel, и я уверен, что он более чем способен (возможно, я искал его, используя неправильные термины) ..
Я пытаюсь извлечь данные таблицы для использования во встроенном средстве создания форм Laravels:
$clusters = Cluster::get(array('id','name'));
В:
{{ Form::select('cluster', $clusters,Input::old('cluster'), array('id' => 'cluster')) }}
Но в настоящее время я получаю выпадающий список с JSON, и если я использую toArray (), он не использует номера ID из массива JSON, он применяет новые номера ID, а затем помещает данные в массив:
Может ли кто-нибудь указать мне правильное направление для правильного формирования массивов из извлечений Eloquent?
Я использовал этот фрагмент кода, который кажется бессмысленным:
$clust = array();
foreach($clusters as $key => $cl) {
$clust[$cl['id']] = $cl['location'];
}
Спасибо
использование lists()
, который будет возвращать массив значений столбцов и необязательный идентификатор для них.
// Controller
$clusters = Cluster::lists('name', 'id');
// View
{{ Form::select('cluster', $clusters) }}
lists()
это Query Builder метод. Все методы Query Builder доступны для моделей Eloquent.
К вашему сведению: при использовании помощников формы он автоматически заполнит старый ввод, если он существует, поэтому вам не нужно его указывать. Кроме того, помощник будет автоматически генерировать идентификатор на основе имени элемента, что также может быть исключено.
Это комбинация использования контроллера для получения данных и создания представления, а затем использования представления для создания формы.
В вашем контроллере:
$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
Надеюсь, что пролить некоторое понимание вашей проблемы!
Edit — не могу произнести слово «кластеры», видимо, LOL