有没有办法(重新)映射 Laravel 集合及其内容的索引?

Is there a way to (re)map Laravel Collections with an index from its content?

我有一些时事通讯:

$newsletters = $channel->Newsletter()->whereIn('id', $wantNewsletters)->get();

此集合中的结果:

我尝试使用 pluck,但它只允许一列:

$newsletters = $channel->Newsletter()->whereIn('id', $wantNewsletters)->pluck('media', 'id');

我想达到的目标是这样的(请原谅我悲伤的油漆车间技巧z :D)

在某种程度上,这就像 ->pluck('*', 'id')。现在我不得不 foreach 每个集合,这对我来说似乎不正确。

感谢您的帮助!

您可以使用keyBy方法:

$newsletters = $channel->Newsletter()->whereIn('id', $wantNewsletters)->get()->keyBy('id');