Je veux stocker des données au format json dans la base de données d'un tableau donné. Mais comment je le stocke en utilisant le contrôleur.
Supposons que j'ai des données json comme:
{"id":"bangladesh","divisions":[{"name":"Barisal"},{"name":"Chittagong"},{"name":"Dhaka"},{"name":"Khulna"},{"name":"Rajshahi"},{"name":"Rangpur"},{"name":"Sylhet"}]}
Autant que je sache dans le contrôleur utilisant le format json, c'est comme ça car je n'en suis pas pleinement conscient.
public function saveUser(Request $request)
{
$div=new Div();
$user->json = json_encode( array({"Date 1": {
{"id":"bangladesh","divisions":[{"name":"Barisal"},{"name":"Chittagong"},{"name":"Dhaka"},{"name":"Khulna"},{"name":"Rajshahi"},{"name":"Rangpur"},{"name":"Sylhet"}]}
$div->save();
return redirect('getList');
}
Comment puis-je l'enregistrer dans mySQL uniquement la liste des divisions dans Division Model en utilisant Laravel Controller?
Vous n'avez pas besoin de convertir les données du tableau en chaîne JSON vous-même, utilisez le paramètre Laravel $ cast sur votre modèle: https://laravel.com/docs/5.2/eloquent-mutators # attribut-casting
Vous devriez faire quelque chose comme ça dans votre modèle Div:
protected $casts = [
'divisions' => 'array',
];
Vous pouvez convertir votre modèle au format JSON comme $model->toJson();
ou
si vous avez des données dans un tableau, vous pouvez utiliser json_encode(['id' => 1, 'name' => 'User 1']);
Le schéma Laravel prend également en charge les types de champs JSON. https://laravel.com/docs/5.0/schema#adding-columns
Vous pouvez également utiliser le type de champ text
pour stocker les données JSON.
Définissez votre modèle
protected $casts = [
'list' => 'array'
];
Voici le code complet.
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'primary_id',
'list'
];
protected $casts = [
'list' => 'array'
];
public function setMetaAttribute($value)
{
$list = [];
foreach ($value as $array_item) {
if (!is_null($array_item['key'])) {
$list[] = $array_item;
}
}
$this->attributes['list'] = json_encode($list);
}