【问题标题】:How to use toArray in Laravel Lighthouse Resolver?如何在 Laravel Lighthouse Resolver 中使用 toArray?
【发布时间】:2021-09-09 10:28:03
【问题描述】:

当我在查询生成器中使用first() 时,我得到了结果。见:

public function __invoke($_, array $args)
{

  return MyTable::where('id', 1)->first();
}

但是,当我将first() 更改为toArray() 时,我无法得到任何结果。见:

public function __invoke($_, array $args)
{

  return MyTable::where('id', 1)->get()->toArray();
}

如何获得toArray() 方法的结果?

即使我将 toArray() 方法与 get() 一起使用,它也不起作用!

当我使用 first() 方法时结果是这样的

{
  "data": {
    "myTableResolver": {
      "column_1": 1,
      "column_2": "XYZ"
    }
  }
}

当我使用 toArray() 方法结果是这样的

{
  "data": {
    "myTableResolver": {
      "column_1": null,
      "column_2": null
    }
  }
}

【问题讨论】:

    标签: laravel laravel-lighthouse


    【解决方案1】:

    因为toArray()方法属于获取查询生成器的集合结果, 您应该使用get() 方法获取结果:

      return MyTable::where('id', 1)->get()->toArray();
    

    【讨论】:

      【解决方案2】:

      我想最好的方法是这样做:

      return MyTable::find(1)->pluck('some_column')->toArray();
      

      使用pluck,您可以过滤您想要获取的列。

      您也可以使用find(1) 方法代替where('id', 1)

      【讨论】:

      • 我已经用过另一种方式了。但这是一个有趣的方法。下次我会试试的。谢谢。
      猜你喜欢
      • 2022-09-27
      • 1970-01-01
      • 2020-07-17
      • 2019-11-28
      • 2020-12-01
      • 2016-07-13
      • 2021-04-04
      • 2020-08-19
      • 1970-01-01
      相关资源
      最近更新 更多