Maison > Questions et réponses > le corps du texte
J'ai du mal à utiliser la fonction put() de Laravels car je souhaite mettre du contenu JSON dans ce scénario unique.
$datatable->GroupsCollection = $datatable->GroupsCollection->put($job, '{"grade":'.$grade.'}' );
Mais lorsque vous essayez de créer un "faux" JSON, les valeurs insérées seront :
{"等级":'VALUE_OF_$GRADE'}
J'ai essayé d'utiliser str_replace()
和 stripslashes()
pour supprimer la barre oblique inverse, mais sans succès.
Je l'ai recherché sur Google et il y a quelque chose à lire sur le casting du modèle. Alors j'ai tapé ceci :
protected $casts = [ 'dvalue' => 'array', ];
Cela brisera la fonctionnalité existante du code.
public function getGroupsCollectionAttribute() { return collect($this->dvalue ? $this->dvalue['groups'] : null); } public function setGroupsCollectionAttribute($value) { $currentValue = $this->dvalue ?? new Collection(); $this->dvalue['groups'] = $currentValue->$value; }
J'ai "corrigé", mais je ne sais pas comment je suis censé utiliser cette nouvelle distribution pour formater la fonction "set" et la définir sur un tableau.
Il convient de noter que nous mélangeons les choses dans les lignes de la base de données, ce n'est donc pas toujours du JSON. Existe-t-il un moyen plus simple de résoudre ce problème ?
P粉0020233262023-09-10 11:29:38
Réparez-le en créant simplement un tableau comme celui-ci :
$grade_json = array("grade" => $grade); $datatable->GroupsCollection = $datatable->GroupsCollection->put($job, $grade_json);