美好的一天我在后端有这个代码(试图在MONGO中更新这个值) http://prntscr.com/j03gh4
$dossier=Dossier::where('_id',(int)$request->input('dossier_id'))->first();
//var_dump($request->input('value'));
$dossier->program[$request->input('program')]['cities']
[$request->input('city')]['services']
[$request->input('service')][$request->input('name')]=$request->input('value');
$dossier->save();
但是我收到了这个例外 http://prntscr.com/j03h0s
间接修改重载属性App \ Dossier :: $ program无效
我有什么办法来修复这种情况?
答案 0 :(得分:3)
问题是调用$dossier->program
实际上并不直接在Eloquent类型模型中访问属性,而是调用__get
方法。
get方法不返回对属性的引用。你应该做的是抓住原始属性,修改它然后把它放回去:
$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();