Posted on: July 16, 2021 04:26 PM
Posted by: Renato
Views: 722
Laravel Eloquent recupera linha com coluna JSON
Laravel Eloquent retrieve row with JSON column
Surgiu um caso que estava retornando uma coluna json do mysql, e tive que aprender o que fazer:
Table:
id |name | option_data
1 |Joe |{"gender":"Male","cnic":"1234567","dob":"2016-03-14"}
2 |Doe |{"gender":"Male","cnic":"9999","dob":"2016-03-14"}
How can I get data in proper json_encode format.
For example if I write
echo json_encode($app->auth->users);
My Output for option_data
option_data":"{\"gender\":\"Male\",\"cnic\":\"61101-6859110-3\",\"dob\":\"2016-03-14\"}"
Experimente com seu model, para seu modelo de dados
public function getOptionDataAttribute($value)
{
return json_decode($value);
}
e retorne em seu controlador:
return Model::all(); //What you need to retrieve
a saída deve ser:
{
id: 1
name: name,
option_data: {"gender":"Male","cnic":"1234567","dob":"2016-03-14"}
}
protected $casts = [
"option_data" => "array"
];
E no controller vc faz assim:
$model = Model::find($id);
return response()->json(
[
'defaultStyle' => $model->settings['defaultStyle']
], 200);
ou assim:
return response()->json(
[
'defaultStyle' => $model->settings
], 200);
Espero ajudar com este simples post.
- Renato Lucena
Donate to Site
Renato
Developer