MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Modificação indireta da propriedade sobrecarregada App\Dossier::$program não tem efeito


O problema é que chamar $dossier->program não acessa a propriedade diretamente nos modelos do tipo Eloquent, mas chama um __get método.

Esse método get não retorna uma referência à propriedade. O que você deve fazer é pegar a propriedade original, modificá-la e depois colocá-la de volta:
$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();