我有以这种方式提交的输入字段:ResourceClosedError: This result object does not return rows. It has been closed automatically.
我可以通过dental_plan[property_name]
在控制器中获取它们。当我返回请求时,我得到了5个正在发送的字段。由于DB模式是为了使牙科计划必须具有患者ID,我需要一种方法将该属性添加到$request->dental_plan
,但这些解决方案似乎失败了:
dental_plan[]
我通过翻转属性,将它们作为对象等尝试了其他几种解决方案。通常我得到错误$request['dental_plan']['patient_id'] = $patient->id;
array_push($request->dental_plan, ['patient_id' => $patient->id];
。这样做的正确方法是什么?
编辑:
是否可以在Laravel模型中添加一个特定字段和一个常规字段,以便您可以这样:
Indirect modification of overloaded property Illuminate\Http\Request has no effect
答案 0 :(得分:2)
如果你的关系设置正确,你可以这样做:
$patient->dentalPlan()->create($request->input('dental_plan'));
如果没有,则只需在添加参数之前将数组分配给变量:
$dentalPlan = $request['dental_plan'];
$dentalPlan['patent_id'] = $patient->id;
然后,您可以使用$dentalPlan
答案 1 :(得分:1)
首先,你从$request->property
访问对象的方式实际上是一种神奇的方法,最终是public function
__ get(){}
,它不允许作为普通数组进行操作,甚至它看起来像一个数组。
执行此操作的正确方法是从输入中定义一个数组,将所需的新键值添加到该数组中。然后用它来实际保存或做你想做的任何事情。
$inputAttrs = $request->dental_plan;
$inputAttrs['patient_id'] = $yourPatientId;