Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将多个集合合并到一个symfony中_Symfony_Collections - Fatal编程技术网

将多个集合合并到一个symfony中

将多个集合合并到一个symfony中,symfony,collections,Symfony,Collections,(使用Symfony 3.4) 我试图通过合并(仅获取对象)多个集合来创建数组集合。听起来很奇怪,让我解释一下 我从数据库中获取所有用户,并为每个用户添加他/她的所有许可证。我的代码: $users = $this->userRepository->findAllUsers($params); $users->forAll(function (User $user) use (&$array) { $array = array_merge($array,

(使用Symfony 3.4)

我试图通过合并(仅获取对象)多个集合来创建数组集合。听起来很奇怪,让我解释一下

我从数据库中获取所有用户,并为每个用户添加他/她的所有许可证。我的代码:

 $users = $this->userRepository->findAllUsers($params);

 $users->forAll(function (User $user) use (&$array) {
     $array = array_merge($array, $user->getLicenses());
 });

 $a = new ArrayCollection($array);

我应该如何解决此问题?

您可以像这样合并集合(从):

因此,这可以应用于您的案例:

$users = $this->userRepository->findAllUsers($params);
$licensesArray = [];

foreach ($user in $users) {
    $licensesArray = array_merge($licencesArray, $user->getLicenses()->toArray());
});

$licenses = new ArrayCollection($licensesArray);
这可能导致在生成的集合中多次使用相同的许可证实体。如果不需要,您可以向阵列写入一些自定义筛选,或者只创建一个存储库getter,以便根据用户ID/用户搜索参数获取许可证

$users = $this->userRepository->findAllUsers($params);
$licensesArray = [];

foreach ($user in $users) {
    $licensesArray = array_merge($licencesArray, $user->getLicenses()->toArray());
});

$licenses = new ArrayCollection($licensesArray);