将数组元素追加到已排序的Eloquent :: lists数组的开头

时间:2015-02-03 10:16:11

标签: php arrays laravel

我在结构的数据库表中有一个项目列表: id,名字。

我需要填充一个选择框,其中包含按名称排序的项目以及"全部" id = 0的元素作为第一个元素。错误的是该元素根本不会出现在列表框中。

控制器方法:

public function getItems(){

$items = Item::orderBy('name', 'ASC')->lists('name', 'id');
$items_all = array(0 => 'All');
array_merge($items_all, $items);
return View::make('items')->with('items', $items);
}

和观点:

{{ Form::select('item_id', $items, Input::Get('item_id'), array('class'=>'form-control')) }}

2 个答案:

答案 0 :(得分:1)

array_merge返回新数组,因此您必须将返回值分配给$items

$items = array_merge($items_all, $items);

如果您想要:

,可以将其归结为此语法
$items = array_merge(['0' => 'All'], $items);

预先确定数组项目的订单,您可以使用此功能:

$items = $items_all + $items;

答案 1 :(得分:0)

更新后

array_merge($ items_all,$ items)

$ items = array_merge($ items_all,$ items)

显示所有选择框元素,包括'All',但是array_merge重新编号元素,所以我使用了:

$ items = $ items_all + $ items;

正如@lukasgeiter同时提出的那样,所以我选择了他的答案作为最终答案。