MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Die indirekte Änderung der überladenen Eigenschaft App\Dossier::$program hat keine Wirkung

Das Problem ist, dass der Aufruf von $dossier->program greift in Eloquent-Typmodellen nicht direkt auf die Eigenschaft zu, sondern ruft ein __get auf Methode.

Diese get-Methode gibt keinen Verweis auf die Eigenschaft zurück. Was Sie tun sollten, ist, die ursprüngliche Eigenschaft zu greifen, sie zu ändern und sie dann zurückzusetzen:

$dossier=Dossier::where('_id',(int)$request->input('dossier_id'))->first();
$originalProgram = $dossier->program;
$originalProgram[$request->input('program')]['cities'][$request->input('city')]['services'][$request->input('service')][$request->input('name')]=$request->input('value');
$dossier->program = $originalProgram;
$dossier->save();