Laravel列出了函数前置值

时间:2015-09-06 00:10:31

标签: php laravel laravel-5 eloquent laravel-5.1

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

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

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

2 个答案:

答案 0 :(得分:7)

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;

答案 1 :(得分:1)

如果您正好重新编制数字键,那么使用array_unshift()的接受答案是有效的。如果要保留原始数字键(例如,如果键对应于表条目的ID),则可以执行以下操作:

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