如何通过集合中的键数组获取元素?
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'。
我有一个集合(例如有 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'。