Laravel 5将数据库中的id传递给<select>值</select>

时间:2015-04-12 17:20:33

标签: php laravel-5

我是php框架的新手,我正在使用Laravel创建一个CRUD应用程序。问题是,当我尝试将类别的Id从DB传递到View中的值时,我得到错误:

  

htmlentities()期望参数1为字符串,给定数组(查看:C:\ wamp \ www \ vecrud \ resources \ views \ products \ create.blade.php)

控制器

public function create()
{
    $products_create = categories::all()->lists('category');
    $categ_id = categories::all()->lists('id');

    return View::make('products.create', compact('products_create', 'categ_id'));
}   

查看

{!! Form::label('category', 'Categorie') !!} <br />
{!! Form::select('category', $products_create, Input::old('category'), array('value' => $categ_id)) !!}

2 个答案:

答案 0 :(得分:2)

值(id)和选择选项(category)的文本应该在同一个数组中。我想你正在寻找这个:

$category_list = categories::all()->lists('category', 'id');

return View::make('products.create', compact('category_list'));

查看:

{!! Form::select('category', $category_list, Input::old('category')) !!}

此外,您无需在all()之前致电lists()

$category_list = Categories::lists('category', 'id');

答案 1 :(得分:1)

使用lists()方法,第一个参数是数组值,可选的第二个参数是用于数组键的属性。因此,如果您想要使用主键键入的数据库中的值,则可以执行以下操作:

$options = $model->lists('name', 'id');

然后,您可以直接将此数组传递给select表单助手:

Form::select('name', $options, null, ['class' => 'form-control']);

希望有所帮助!