Laravel lists
函数用于返回数组,因此我could prepend a value。但它现在是一个对象。我想要做的是为下拉列表生成一个列表,但在前面添加一个额外的值,如下所示:
['select a value.', '0']
我应该如何将数据添加到新的Laravel lists
函数?
答案 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;