我已经删除了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' ];
文档可以在这里看到