【问题标题】:Laravel collections convert key value to key assoc arrayLaravel 集合将键值转换为键关联数组
【发布时间】:2019-08-11 06:07:22
【问题描述】:

我使用这个函数:$assets->pluck('url')

它输出:['link','link1','link2']

如何转换为:[{url: 'link'}, {url: 'link1'}, {url: 'link2'}]

【问题讨论】:

  • 您的收藏是否来自对模型执行的查询?
  • 它来自关系
  • 你能展示一下你是如何得到$assets的代码吗?
  • 是的,$assets = auth()->user()->assets;
  • 我在下面提供了一些代码

标签: laravel collections eloquent


【解决方案1】:

您可以向关系查询添加函数以仅返回 url 字段。这样你就会得到想要的结果。

$assets = auth()->user()->assets()->select('url')->get();

【讨论】:

  • 酷,但在我的情况下,我认为一个??神奇的??收集方法会更合适。只是在我看来,收藏品的记录很差,可能有办法做到这一点
  • 为什么收集方法会更好?您将从数据库中获取更多数据并在内存中进行过滤?
  • 不,因为控制器的设计目的 - 主要是为了获取数据。我有一个 vue 前端,它需要 laravel 提供的 url 列表
【解决方案2】:

要返回仅包含模型上某些字段的集合,您可以添加一个字段列表数组,以作为模型上 get 方法的参数检索

ModelName::get(['id', 'url']);

或通过将字段列表作为参数传递给select 方法

ModelName::where([...])->select('id', 'url')->get();

【讨论】:

    【解决方案3】:

    您可以使用->only()集合方法来指定要返回的字段:

    $assets = auth()->user()
        ->assets
        ->only(['url'])
        ->all();
    

    【讨论】:

      猜你喜欢
      • 2016-07-21
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      相关资源
      最近更新 更多