Heim  >  Fragen und Antworten  >  Hauptteil

Laravel ->put()-Problem – gemischter Inhalt (JSON vs. Nicht-JSON)

Ich habe Probleme bei der Verwendung der Laravel-Funktion put(), weil ich JSON-Inhalte in dieses einzelne Szenario einfügen möchte.

$datatable->GroupsCollection = $datatable->GroupsCollection->put($job, '{"grade":'.$grade.'}' );

Aber beim Versuch, „falsches“ JSON zu erstellen, lauten die eingefügten Werte: {"等级":'VALUE_OF_$GRADE'} Ich habe versucht, den Backslash mit str_replace()stripslashes() zu entfernen, aber ohne Erfolg.

Ich habe es gegoogelt und es gibt etwas über die Besetzung im Modell zu lesen. Also habe ich Folgendes eingegeben:

protected $casts = [
    'dvalue' => 'array',
];

Dadurch wird die bestehende Funktionalität des Codes beeinträchtigt.

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

Ich habe get „behoben“, bin mir aber nicht sicher, wie ich diese neue Umwandlung verwenden soll, um die Funktion „set“ zu formatieren und auf ein Array festzulegen.

Es ist erwähnenswert, dass wir in den Datenbankzeilen etwas durcheinander bringen, sodass es sich nicht immer um JSON handelt. Gibt es eine einfachere Möglichkeit, dieses Problem zu lösen?

P粉955063662P粉955063662379 Tage vor426

Antworte allen(1)Ich werde antworten

  • P粉002023326

    P粉0020233262023-09-10 11:29:38

    通过简单地创建一个像这样的数组来修复它:

    $grade_json = array("grade" => $grade);
    $datatable->GroupsCollection = $datatable->GroupsCollection->put($job, $grade_json);

    Antwort
    0
  • StornierenAntwort