Laravel:从数据库中填充表单下拉菜单

3

第一个 Laravel 项目。

我想制作一个表单下拉列表,它是从 MySQL 数据库中填充的。我在文档中找到了这个:

Form::select('size', array('L' => 'Large', 'S' => 'Small'))

我尝试了这个:

{{Form::select('size', array(
                @foreach ($suppliers as $supplier)
                $supplier->id => $supplier->name
                @endforeach
))
}}

但是我遇到了语法错误:

e34a9587ee23853b6d4c489cc0ed13515fad9c06.php中的ErrorException第23行:解析错误:语法错误,意外的“<”,期望“)”(视图:/var/www/html/project/laravel/leltar/resources/views/invoice.blade.php)

我错在哪里了?

2个回答

3

pluck方法在laravel 5.3版本中返回一个集合,但这个答案是错误的,它不能正确显示选择框!

以下是正确的解决方案!

$suppliers = Supplier::pluck('name', 'id')->toArray();

并且在视图中这样调用:

{!! Form::select('supplier', $suppliers, null, ['class' => 'form-control']) !!}

Laravel 5.5的更新

我刚测试了一下,在Laravel 5.5中,pluck()方法可以直接使用,不需要像下面这样加上toArray()方法:

$tags = Tag::pluck('name', 'id');

或者对于这个问题;
$tags = Supplier::pluck('name', 'id');

2
尝试使用pluck方法:pluck method
Form::select('size', $suppliers->pluck('name', 'id')->all())

我又收到了一个错误信息:“在数组上调用成员函数pluck() (视图:/var/www/html/project/laravel/leltar/resources/views/invoice.blade.php)”。 - Feralheart
你如何从控制器发送 $suppliers - Mihai Matei
$suppliers = DB::select('select * from supplier'); return view('invoice',['suppliers'=>$suppliers]); - Feralheart
1
$suppliers = SupplierModel::all(); 尝试使用模型而不是原始查询。 - Mihai Matei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接