2014-11-05 2 views
1

Я попытался найти способ сделать это с Laravel, и я уверен, что он более чем способен (возможно, я искал его, используя неправильные термины).Laravel Eloquent извлекает данные в настраиваемый массив

Я пытаюсь извлечь данные из таблицы, которые будут использоваться в Laravels встроенный в форме создателя:

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

в:

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

Но в настоящее время, я получаю выпадающий список с JSON в нем, и если я использую toArray() он не использует идентификационные номера из массива JSON, он применяет новые идентификационные номера, а затем помещает данные в массив:

Badly formed array using toArray from JSON object

Может кто-нибудь мне точку в правильном направлении, чтобы сформировать массивы должным образом из красноречивых удаление зубов? Я использую этот кусок кода, который чувствует себя бессмысленно:

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

Благодарности

+0

Опубликовать данные о возврате (примеры). и укажите желаемый формат. – itachi

ответ

6

Использование lists(), который будет возвращать массив значений столбцов, а также дополнительный идентификатор для них.

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

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

lists() является Query Builder method. Все методы Query Builder доступны для моделей Eloquent.


FYI: При использовании формы помощников, он будет автоматически заполнить старый вход, если он существует, так что вам не нужно указывать. Кроме того, помощник автоматически генерирует идентификатор на основе имени элемента, что также может быть исключено.

+0

Спасибо, я знал, что вокруг был простой способ. Приветствия за дополнительные указатели на старый вход и ID. Я люблю Laravel для всех маленьких помощников/помощников! Редактировать: Я, должно быть, не видел этого из-за того, что я сужу свое видение документации Eloquent - спасибо также за то, что вы указали, что методы построения запросов также доступны –

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 

Надеюсь, что это прояснит вашу проблему!

Edit - не может означать «Кластеры» видимо лол

+0

Полностью увидеть, откуда вы пришли, но я просто считаю, что у Laravel наверняка есть что-то, что можно преодолеть, я уверен, что видел, как это делается где-то, используя -> get (array ('id', 'name')) и т. д., но когда я делаю это, он становится массивом внутри массива. –

Смежные вопросы