Problème Laravel ->put() - contenu mixte (JSON vs non-JSON)
P粉955063662
P粉955063662 2023-09-09 15:30:11
0
1
464

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粉955063662
P粉955063662

répondre à tous(1)
P粉002023326

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);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!