我正在使用laravel和elokent以及mysql数据库。
我的数据库中有一个json字段:
class CreateJogoDetalhesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tableX', function (Blueprint $table) {
$table->increments('id');
[... others ...]
$table->json('numbers');
}
[...]
检索模型/api路由上的数据时:
Route::middleware('cors:api')->get('/MYROUTE', function (Request $request) {
$resource= Tablex::with('tb1','tb2','tb3')->get();
return $resource->toJson();
});
我的mysql json字段带有一个字符串格式:
tableX": {
"id": 1,
"name": "foo",
"values": "{\"6\": 3.5, \"7\": 24.5, \"8\": 24.5, \"9\": 24.5, \"10\": 24.5, \"11\": 24.5, \"12\": 24.5, \"13\": 24.5, \"14\": 24.5, \"15\": 24.5}",
},
但我需要这种格式:
"tableX": {
"id": 1,
"name": "foo",
"values": {
"6": 3.5,
"7": 24.5,
"8": 24.5,
"9": 24.5,
"10": 24.5,
"11": 24.5,
"12": 24.5,
"13": 24.5,
"14": 24.5,
"15": 24.5
},
我怎样才能要求拉威尔捕捉这种格式的数据?
1条答案
按热度按时间v9tzhpje1#
在处理存储为序列化json的列时,数组转换类型特别有用。例如,如果您的数据库具有包含序列化json的json或文本字段类型,则当您在eloquent模型上访问该属性时,向该属性添加数组强制转换将自动将该属性反序列化为php数组:
https://laravel.com/docs/5.7/eloquent-mutators#array-和json铸造
这将把它转换成php端的数组,并在laravel序列化模型时正确地包含json数据。