Laravel 4.2中如何手动为Eloquent查询结果添加行
在Laravel 4.2中给下拉框添加默认选项
嘿,这个需求太常见啦,在Laravel 4.2里其实有好几种简单的实现方式,我给你分享两个最实用的:
方法一:利用集合的prepend方法
因为Location::all()返回的是Laravel的Eloquent集合对象,它自带prepend方法,可以直接在集合头部插入元素。你只需要确保插入的元素和你的模型字段对应就行(比如假设你的地点表有id和name字段):
// 获取所有地点数据 $locations = Location::all(); // 在集合开头添加默认选项 $locations->prepend(['id' => '', 'name' => '请选择地点']);
这样处理后,$locations的第一个元素就是你要的默认项,后续渲染下拉框的时候直接用这个集合就行。
方法二:直接生成键值对数组(更适合下拉框场景)
如果你的下拉框只需要id和name的键值对,用lists方法会更高效,然后和默认选项数组合并:
// 先获取地点的键值对数组(键是id,值是name),再合并默认选项 $locations = ['' => '请选择地点'] + Location::lists('name', 'id')->toArray();
这种方式得到的是一个纯数组,直接传给下拉框渲染会更顺手,比如用Laravel的Form类渲染:
echo Form::select('location_id', $locations, null, ['class' => 'form-control']);
或者手动写HTML的话:
<select name="location_id"> @foreach($locations as $id => $name) <option value="{{ $id }}">{{ $name }}</option> @endforeach </select>
两种方法都能实现你要的效果,看你更习惯哪种写法啦~
内容的提问来源于stack exchange,提问作者ManfredP
相关产品推荐
相关产品推荐

