Maison  >  Questions et réponses  >  le corps du texte

Problème Laravel ->put() - contenu mixte (JSON vs non-JSON)

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粉955063662P粉955063662429 Il y a quelques jours465

répondre à tous(1)je répondrai

  • P粉002023326

    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);

    répondre
    0
  • Annulerrépondre