如何通过集合中的键数组获取元素?

How can I get get elements by array of keys from a collection?

我有一个集合(例如有 10 个元素),我想制作另一个元素集合,仅包含两个 ID 为 5 和 6 的元素。类似这样的事情:

$newCollection = $collection->get([5,6]);

$collection 是 Illuminate\Database\Eloquent\Collection 的实例。 但我当然会收到错误消息:

The first argument should be either a string or an integer

我知道我可以用循环或闭包来实现,我只是在徘徊是否有更优雅的方法。在文档中找不到这样的东西。这是 laravel 5.

谢谢

简单,用whereIn()

$newCollection = $collection->whereIn('id', [5, 6])->get();

直接使用eloquent型号:

$newCollection = Collection::whereIn('id', [5, 6])->get();

也许使用过滤器,假设这些是 id 值:

$idList = [5,6];
$newCollection = collection->filter(
    function($value) use ($idList) {
        if (in_array(value->id, $idList) {
            return true;
        }
    }
);

您可以使用 Collection::only。

例如:

$collection->only([5, 6]);

请注意,它会查看属性主键以了解要针对哪个键进行操作。例如,如果返回数据库集合,$collection->primaryKey 很可能是 'id'。