gpt4 book ai didi

arrays - 合并两个 Eloquent Collections 并删除所有重复项。

转载 作者:行者123 更新时间:2023-12-04 03:07:14 25 4
gpt4 key购买 nike

我有两个数组,$user_roles$global_roles .我想创建一个新数组,我们称之为 $available_roles ,它可以等同于 $global_roles 中的项目减去 $user_roles 中的项目

我有以下代码可以对普通数组执行此操作。 $available_roles = array_unique(array_merge($global_roles, $user_roles), SORT_REGULAR);
这被证明是有问题的,因为 Laravel 在执行查询时不使用传统数组,而是使用 Eloquent 集合。

大家还有什么想法?

最佳答案

这相当简单。您可以使用收藏的 merge方法:

$available_roles = $global_roles->merge($user_roles);

因为 merge内部使用使用 id 作为键的关联数组(字典),这应该会自动删除重复项。

无论如何,您可以使用 unique 删除集合中的重复项。 :
$uniqueCollection = $collection->unique();

现在这是为了合并您实际要寻找的两个集合之间的差异。您可以通过两种方式执行此操作:
$available_roles = $user_roles->diff($global_roles);

或者
$available_roles = $global_roles->except($user_roles->modelKeys());

关于arrays - 合并两个 Eloquent Collections 并删除所有重复项。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29446255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com