【问题标题】:Unable to merge Laravel collections无法合并 Laravel 集合
【发布时间】:2021-07-20 05:31:14
【问题描述】:

我不确定为什么这不起作用。我不得不对外部 API 进行一系列分页调用,并希望将所有页面合并到一个主集合中。现在每个调用(页面)都返回它自己的集合。我知道 merge() 方法,但由于某些未知原因它不起作用。

这是我得到的:

$master_collection = collect();

for ($x = 1; $x <= $total_pages; $x++) {
  $page = ApiService::getPage($x); //Returns collection of elements from the requested page
  $master_collection->merge($page);
} 
dd($master_collection);

但是,转储只返回已初始化的空集合,但没有合并任何页面集合。我知道页面集合工作正常,因为我可以将 $page 保存到数组中的新索引和dd() 数组,可以看到各个集合的数组。

【问题讨论】:

    标签: laravel laravel-8 laravel-collection


    【解决方案1】:

    您必须将合并后的集合保存到 $master_collection 变量中。

    $master_collection = collect();
    
    for ($x = 1; $x <= $total_pages; $x++) {
      $page = ApiService::getPage($x); //Returns collection of elements from the requested page
      $master_collection = $master_collection->merge($page);
    } 
    

    【讨论】:

    • 啊,我明白了,它正在创建一个带有合并的新集合,我必须将其分配回变量,而不是仅仅将新部分添加到现有集合中。现在它可以工作了,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 2017-07-21
    • 2017-03-07
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2021-09-20
    相关资源
    最近更新 更多