Laravel为内部数组添加键

时间:2017-05-12 18:58:37

标签: php arrays laravel

我有以这种方式提交的输入字段: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

2 个答案:

答案 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;