我正在从数据库中获取一些信息:

$foo = $this->fooRepository->all()->lists('name', 'id');

我得到:

Collection {#506 ▼
  #items: array:9 [▼
    "9c436867-afe9-4234-a849-253aea4f602c" => "aaa"
    "d250102b-1370-40d0-99c5-7e5bfd0a15e4" => "sss"
    "7342f212-083b-458d-8af8-24986bbb627d" => "ddd"
    "029c53ce-dc16-49fd-8d83-9d8270d9ff37" => "fff"
    "3add6a37-72e2-4054-853e-9ed8addbf3ea" => "ggg"
    "28f5a9ac-014e-4f22-bda8-e2d5b1f48273" => "hhh"
    "94fccb2c-d732-4369-9bf7-78925797e578" => "jjj"
    "5b494994-93f0-406e-b420-aceb7b6111d7" => "kkk"
    "22a7824a-c6eb-45e7-b9c5-e40c134e3ac8" => "lll"
  ]
}

完美的该集合随后被传递到Form::select,以填充" Select /选项"下拉列表.

我想在这个集合前面加上另一个键值对,其中key是空字符串,value包含"Choose something"这样的文本.

我可以附加:

$foo[''] = 'Choose something…';

所以我明白了

Collection {#506 ▼
  #items: array:10 [▼
    "9c436867-afe9-4234-a849-253aea4f602c" => "aaa"
    "d250102b-1370-40d0-99c5-7e5bfd0a15e4" => "sss"
    "7342f212-083b-458d-8af8-24986bbb627d" => "ddd"
    "029c53ce-dc16-49fd-8d83-9d8270d9ff37" => "fff"
    "3add6a37-72e2-4054-853e-9ed8addbf3ea" => "ggg"
    "28f5a9ac-014e-4f22-bda8-e2d5b1f48273" => "hhh"
    "94fccb2c-d732-4369-9bf7-78925797e578" => "jjj"
    "5b494994-93f0-406e-b420-aceb7b6111d7" => "kkk"
    "22a7824a-c6eb-45e7-b9c5-e40c134e3ac8" => "lll"
    "" => "Choose something…"
  ]
}

但不知道.我不能使用array_merge,因为我处理的是Illuminate\Database\Eloquent\Collection的实例,而不是数组,所以this answer不起作用.

有什么提示吗?谢谢

推荐答案

$foo = ['' => 'Choose something…'] + $foo->all();

如果您的$foo必须是集合实例,只需再次将其包装到集合中:

$foo = collect(['' => 'Choose something…'] + $foo->all());

I submitted a PR to laravel,让你把 keys 传给prepend.如果您使用的是Laravel 5.1.24或更新版本,现在可以执行以下操作:

$foo = $this->fooRepository->all()
            ->lists('name', 'id')
            ->prepend('Choose something…', '');

Laravel的更高版本将lists方法重命名为pluck.如果您使用的是相对现代的Laravel版本,请使用pluck:

$foo = $this->fooRepository->all()
            ->pluck('name', 'id')
            ->prepend('Choose something…', '');

Laravel相关问答推荐

到查询构建器的MySQL查询

如何解决此 Backblaze B2 S3 兼容 API 错误?

将 ID 传递给资源控制器进行编辑

使用两个日期之间的范围获取两列之间的记录,同时搜索过滤条件

在 laravel 中查询此类数据的最佳做法是什么?

Laravel + Plupload 上传到 S3 响应以进行预检无效 - CORS

Laravel belongsTo 关系 - 试图获取非对象的属性

Laravel 4:如何将 WHERE 条件应用于 Eloquent 类的所有查询?

Eager加载:在具有eloquent关系的枢轴上使用`with`

我怎样才能了解更多关于我的 Laravel 排队作业(job)失败的原因?

合并和排序两个 Eloquent 集合?

你如何在自定义 Laravel Nova 工具中使用确认对话?

Laravel vagrant up 不工作 - Errno::EADDRNOTAVAIL

如何在 Laravel 5.5 中为选定的请求类设置自定义响应

Cookie::forget 不工作 laravel 5.1

Laravel 随机排序

如何使用中间件将标头添加到响应中?

Composer 致命错误:声明 Fxp... 必须与第 334 行的 ...AbstractAssetsRepository.php 兼容

禁用Eager的关系

Laravel 更新后用户模型错误(用户类包含 3 个抽象方法)