Laravel列出了函数的前置值


Laravel lists function prepend value

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

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

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

lists()返回一个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()的可接受答案是有效的。如果您希望维护原始的数字键(例如,如果键对应于表项的id),那么您可以这样做:

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