【问题标题】:php How to get it pure array from Eloquent Laravelphp 如何从 Eloquent Laravel 获取纯数组
【发布时间】:2017-03-08 20:50:33
【问题描述】:

这是我的查询

$reminderData = Reminder::where('status', 1)->get()->toArray();

这是我的结果

[
{"id":1,"reminder_type":2,"reminder_name":"first","reminder_date":"2016-10-26"},
{"id":2,"reminder_type":2,"reminder_name":"second","reminder_date":"2016-10-26"},
{"id":3,"reminder_type":2,"reminder_name":"third","reminder_date":"2016-10-26"},
]

但我需要喜欢

[
["id":1,"reminder_type":2,"reminder_name":"first","reminder_date":"2016-10-26"],
["id":2,"reminder_type":2,"reminder_name":"second","reminder_date":"2016-10-26"],
["id":3,"reminder_type":2,"reminder_name":"third","reminder_date":"2016-10-26"],
]

我该怎么做?

【问题讨论】:

  • 您在此处显示 JSON,而不是数组。你在哪里转换为 JSON?并且所需的输出不是有效的 JSON。
  • 不,不是。您的“结果”是一个 json 字符串,这不是 Eloquent toArray() 提供的。
  • 这样做:dd(Reminder::where('status', 1)->get()->toArray());.
  • 您需要展示更多代码。在某处您将数组输出为 JSON 并且您感到困惑。如果你尝试我给你的dd 代码,你会发现你绝对有一个来自 Eloquent 的数组,而不是 json。
  • 优秀。所以:你看到你有一个数组数组。这正是你想要的。您的代码很好,它已经为您提供了您所要求的结构。

标签: php arrays json laravel eloquent


【解决方案1】:

如 cmets 中所写:

它看起来像肮脏的黑客攻击,它可能会导致更复杂的数据出现意外行为


你可以退货

 json_decode(Reminder::where('status', 1)->get(), true);

正如已经问过的here

【讨论】:

  • 你到底为什么要 json_decode 一个 Eloquent 收藏?
  • 从不,但问题是返回一个数组数组,它​​确实如此。
  • Laravel返回的默认数组结构类似于json格式的数组,所以为了让PHP转换成标准数组,必须使用json_decode方法
  • @DoaaMagdy,它看起来根本不像 json。如果您看到{},并不意味着它是 json。这是完全不同的数据类型。上面的代码会给你一个错误。
  • 仍然不明白downvote ...作为解决方案的问题要求。
【解决方案2】:

试试这个

\Illuminate\Support\Facades\DB::setFetchMode(PDO::FETCH_ASSOC);
$values=\Illuminate\Support\Facades\DB::select("select * from  your_table");
\Illuminate\Support\Facades\DB::setFetchMode(PDO::FETCH_CLASS);
var_dump($values);

【讨论】:

    【解决方案3】:
    $reminderData = Reminder::where('status', 1)->pluck('column_name1', 'column_name2')
    

    在laravel 5.0及以上版本“pluck”方法以数组格式返回数据

    【讨论】:

      【解决方案4】:

      它实际上返回数组数组。您将在两个级别上使用dd(),您将看到array 数据类型。

      此外,您可以使用->get(['id', 'reminder_type', 'reminder_date']) 仅获取所需的列

      【讨论】:

      • 啊,我现在得到这个结果{"2":1,"1":2,"3":3}
      • @SA__,哦,是的,对不起。固定。
      • 哦..没关系..我还是这样[{"id":1,"reminder_type":2,"reminder_date":"2016-10-26"},{"id":2,"reminder_type":1,"reminder_date":"2016-10-26"},{"id":3,"reminder_type":3,"reminder_date":"0000-00-00"}]
      • 我不知道为什么我投了反对票。我刚刚检查过,这个方法返回数组数组(我已经检查了两个级别的类型)。
      • 啊,我按照你的方式试过了..不确定,为什么它没有给出预期的行为。顺便说一句,我正在使用 laravel 5.1
      猜你喜欢
      • 1970-01-01
      • 2020-12-12
      • 2020-07-09
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多