【问题标题】:Laravel resource converting my associative array into a standard arrayLaravel 资源将我的关联数组转换为标准数组
【发布时间】:2021-11-24 06:42:31
【问题描述】:

PHP 7.4.16 和 Laravel 8.61

我的Resource 中有以下代码:

   $arr = ['id' => $this->id, 'associations' => (object)[]];
   foreach ($tas as $ta) {
       $ta_id = $ta->id;
       $arr['associations']->$ta_id = ['suppliers' => [], 'offices' => []];
   }
   return $arr;

$ta->id 是一个整数。

当我打印一个项目的 Resource::collection 时,我可以看到带有正确 ID 的 associations 正在打印。

0:
-> associations:
--> 2:
---> ['suppliers' => [], 'offices' => []]

但是,当我打印单个资源 (new Resource(item)) 时,associations 数组变为标准数组。

associations:
-> 0:
--> ['suppliers' => [], 'offices' => []]

为什么会这样?有什么解决办法吗?

【问题讨论】:

  • 你不是不久前问过这个吗?

标签: php laravel laravel-resource


【解决方案1】:

您只需将->toArray(null) 添加到您的资源中,就像我之前尝试过的这个示例一样

BookingResource::collection($timeSlots)->toArray(null);

【讨论】:

  • 这确实有效,但为什么呢?我的问题是它适用于集合但不适用于单一资源,(new BookingResource($timeSlot))->toArray(null); 为我工作
  • 当你传递 null 时,它会删除外部数组,以便您轻松访问您的对象
猜你喜欢
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2019-01-06
  • 2011-07-11
  • 2017-01-10
  • 2011-05-08
  • 2020-04-23
相关资源
最近更新 更多