代码之家  ›  专栏  ›  技术社区  ›  Arno van Oordt

laravel:将雄辩的集合转换为数组而不转换元素

  •  0
  • Arno van Oordt  · 技术社区  · 7 年前

    有没有一种(简单的)方法可以在不转换元素本身的情况下将雄辩的集合转换为实际数组?

    当我试图将集合传递到类似于 array_rand($collection) . 这给了我一个错误: array_rand() expects parameter 1 to be array, object given

    我通过使用 $collection->shuffle()->first(); 当然,我可以在收藏中循环,把所有的东西按成一个数组,但出于好奇,我想知道我是否忽略了什么。

    更新/结论

    似乎有一个区别 all A方法 Illuminate\Support\Collection 和A Illuminate\Database\Eloquent\Collection 。 雄辩集合上的all返回一个支持集合,而支持集合返回一个数组。

    所以要得到一系列你需要用到的雄辩的模型 SomeModel::all()->all();

    2 回复  |  直到 7 年前
        1
  •  3
  •   Peter 4lbertyson    7 年前

    我的第一个想法是 $collection->toArray() 但这也将雄辩的模型转换为数组。但是 docs $collection->all() 应该避免。

    toArray 还将集合的所有嵌套对象转换为数组。如果要获取原始基础数组,请使用 all 方法代替。

        2
  •  2
  •   Remul    7 年前

    你可以使用 all 集合帮助程序:

    all方法返回由 收藏:

    collect([1, 2, 3])->all();
    
    // [1, 2, 3]