使用DB表中的值生成下拉列表输入

Nig*_*ICU 7 php laravel

我正在尝试使用Laravel生成一个包含MySQL表中值的下拉列表.表很简单,两列 - idcategory.

以下将检索所有记录(类别),但返回一个对象而不是一个数组,这是我需要的下拉代码 -

$categories = Category::all();
Run Code Online (Sandbox Code Playgroud)

下拉列表的代码是:

{{ Form::select('category', $categories, $post->category_id) }}
Run Code Online (Sandbox Code Playgroud)

想法?

UPDATE

bgallagh3r建议使用foreach循环将每个类别转换为数组.他们的代码让我接近但生成了一堆时髦的嵌套optgroup标签.我能够把它归结为一个,optgroup但这太多了......

$categories = Category::all();
foreach ($categories as $cat)
{
    $category = $cat->to_array();
    $id = $category['id'];
    $value = $category['category'];
    $cats[] = array($id => $value);
}
Run Code Online (Sandbox Code Playgroud)

然后,在形式:

{{ Form::select('categories', $categories)}}
Run Code Online (Sandbox Code Playgroud)

我最终得到这个HTML:

    <select name="categories">
    <optgroup label="0">
    <option value="1">Department News</option>
    </optgroup>
    <optgroup label="1">
    <option value="2">General</option>
    </optgroup>
   ...
    </select>
Run Code Online (Sandbox Code Playgroud)

Bar*_*vdh 30

您可以尝试'列表'功能:

$categories = Category::lists('category', 'id');

(仅适用于Laravel 3)或者甚至省略'id'参数,因为它将默认为Model键,请参阅http://laravel.com/api/source-class-Laravel.Database.Query.html#596

$categories = Category::lists('category');

(对于Laravel 4,你需要第二个参数,请参阅http://laravel.com/api/source-class-Illuminate.Database.Query.Builder.html#1034-1063)