Laravel选择JSON添加双引号2次

时间:2021-11-25 20:06:46

Laravel this query:

Laravel这个查询:

DB::table('registries')->where('metas->name', $this->registry_name)->select(['metas->date'])->first();

Returning data like this:

返回这样的数据:

{#1463 ▼
  +"`metas`->'$."date"'": ""2017-01-02""
}

Because of this problem (2x double quotes) there is problem with DataTables package, as result converted to JSON still have 4 double quotes.

由于这个问题(2x双引号),DataTables包存在问题,因为转换为JSON的结果仍然有4个双引号。

If I remove select(['metas->date']) everything fine then...

如果我删除select(['metas-> date'])一切都很好......

2 个解决方案

#1


0  

You can't do that.

你不能这样做。

you need something like

你需要类似的东西

DB::table('registries')->where('metas->name', $this->registry_name)->select(['metas'])->first()->date;

#2


0  

To solve this problem we need to select column with inline path operator ->> like this:

要解决这个问题,我们需要选择带有内联路径运算符的列 - >>像这样:

DB::table('registries')->where('metas->name', $this->registry_name)->select([DB::raw('metas->>"$.date" AS date')])->first();

#1


0  

You can't do that.

你不能这样做。

you need something like

你需要类似的东西

DB::table('registries')->where('metas->name', $this->registry_name)->select(['metas'])->first()->date;

#2


0  

To solve this problem we need to select column with inline path operator ->> like this:

要解决这个问题,我们需要选择带有内联路径运算符的列 - >>像这样:

DB::table('registries')->where('metas->name', $this->registry_name)->select([DB::raw('metas->>"$.date" AS date')])->first();