Laravel列出了函数前置值

Sve*_*art 1 php laravel eloquent laravel-5 laravel-5.1

Laravel lists函数用于返回数组,因此我可以添加一个值.但它现在是一个对象.我想要做的是为下拉列表生成一个列表,但在前面添加一个额外的值,如下所示:

['select a value.', '0']
Run Code Online (Sandbox Code Playgroud)

我应该如何将数据添加到新的Laravel lists功能?

pat*_*cus 7

lists()返回一个Collection对象.要将项添加到集合的开头,可以使用以下prepend方法:

$statusCollection = \App\Status::lists('name', 'id');
$statusCollection->prepend('select a value', 0);
Run Code Online (Sandbox Code Playgroud)

确保传入非null键作为第二个参数prepend,否则此方法将最终重新编号您的数字键.如果您未提供密钥或传入null,则基础逻辑将使用array_shift,这将重新编号密钥.如果你确实提供了一个键,它使用一个数组union(+),它应该保留键.

对于另一个选项,您可以使用该all()方法获取基础项数组,并执行您之前执行的操作:

$statusCollection = \App\Status::lists('name', 'id');
$statusArray = $statusCollection->all();

// if you want to renumber the keys, use array_shift
array_unshift($statusArray, 'select a value');

// if you want to preserve the keys, use an array union
$statusArray = [0 => 'select a value'] + $statusArray;
Run Code Online (Sandbox Code Playgroud)