Laravel 列出函数前置值

Laravel lists function prepend value

Laravel lists函数用于return一个数组所以我could prepend a value。但是它现在是一个对象。我想做的是为下拉列表生成一个列表,但在前面添加一个额外的值,内容如下:

['select a value.', '0']

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

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

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

确保将非空键作为第二个参数传递给 prepend,否则此方法最终会重新编号您的数字键。如果您不提供密钥,或传入 null,则底层逻辑将使用 array_shift,这将对密钥重新编号。如果你确实提供了一个键,它会使用一个数组联合(+),它应该保留键。

对于另一种选择,您可以使用 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;

如果您对重新索引数字键没有问题,那么使用 array_unshift() 的公认答案就可以了。如果你想保留原来的数字键(例如,如果键对应于你的table条目的id),那么你可以这样做:

$statusCollection = \App\Status::lists('name', 'id');
$statusArray = $statusCollection->all();
$finalArray = array('0' => 'Select a value') + $statusArray;