Rij*_*rdt 10 arrays collections laravel eloquent
我有两个数组,$user_roles
和$global_roles
.我想创建一个新的数组,让我们称之为它$available_roles
,它可以等同于项中$global_roles
的项目$user_roles
我有以下代码来执行普通数组. $available_roles = array_unique(array_merge($global_roles, $user_roles), SORT_REGULAR);
这被证明是有问题的,因为Laravel在执行查询时不使用传统数组,它使用Eloquent Collections.
你们还有什么其他想法?
luk*_*ter 17
这很简单.您可以使用Collection的merge
方法:
$available_roles = $global_roles->merge($user_roles);
Run Code Online (Sandbox Code Playgroud)
因为merge
内部使用了一个使用id作为键的关联数组(字典),所以这应该会自动删除重复项.
无论如何,您可以使用unique
以下方法删除集合中的重复项:
$uniqueCollection = $collection->unique();
Run Code Online (Sandbox Code Playgroud)
现在,合并你正在寻找的是两个集合之间的区别.您可以通过两种方式执行此操作:
$available_roles = $user_roles->diff($global_roles);
Run Code Online (Sandbox Code Playgroud)
要么
$available_roles = $global_roles->except($user_roles->modelKeys());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9683 次 |
最近记录: |