美好的一天,我在后端有这段代码(试图在 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
Indirect modification of overloaded property App\Dossier::$program has no effect
我该怎么做才能修复这种情况?
最佳答案
问题在于调用 $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();
关于php - 间接修改重载属性 App\Dossier::$program 没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49624156/