当前位置:  开发笔记 > 编程语言 > 正文

具有json类型字段的Laravel数据库在返回值时添加\"

如何解决《具有json类型字段的Laravel数据库在返回值时添加\"》经验,为你挑选了0个好方法。

我已经删除了Laravel 5文档,我已经看到它支持数据库中的json类型字段,但我注意到了非常奇怪的行为.

这是我的表:

Schema::create('subjects', function ($table) {
        $table->increments('id');
        $table->string('name', 100);
        $table->integer('ects');

        $table->json('studies'); // this is my json type field

        $table->date('created_at');
        $table->date('updated_at');
});

然后我用以下方法播种数据库:

Subject::create(['name' => 'Programming 1', 
'ects' => '0',
'studies' => '{"program":"Computer Science","year":"1"}']);

服务器响应看起来像这样:

{
     "id": 15,
     "name": "Programming 1",
     "brEcts": 0,
     "studies": "{\"program\":\"Computer Science\",\"year\":\"1\"}",
     "created_at": "2015-12-05 00:00:00",
     "updated_at": "2015-12-05 00:00:00",
     "pivot": {
         "profesor_id": 20,
         "subject_id": 15
     }
}

请注意\"在响应字段研究中,laravel为我生成的"pivot"字段正确构造,并且也是json类型字段.

当我查看phpMyAdmin时,研究领域的价值看起来很正常.(没有\")

我的响应服务器代码:

$subjects = Profesor::find($id)->subjets()->get();
return response()->json($subjects);

我是否正确播种了数据库,或者问题是我在服务器上返回值?

我知道我可以在客户端解决这个问题,删除符号"\",但这是我的最后一个选项,因为它不够干净.

编辑:

我通过在我的Model类中添加一个数组转换来解决它:

protected $casts = [
     'name' => 'string',
     'ects' => 'integer',
     'studies' => 'array'
];

文档可以在这里看到

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有