2017-05-12 38 views
0

私はこのように提出する入力フィールドを持っています:dental_plan[property_name]と私は$request->dental_planを実行してコントローラでそれらを取り出すことができます。私がリクエストを返すと、私は5つのフィールドを取得します。Laravelは内部配列にキーを追加します

$request['dental_plan']['patient_id'] = $patient->id; 
array_push($request->dental_plan, ['patient_id' => $patient->id]; 

私は属性をひっくり返すことにより、他のいくつかの解決策を試してみました、:DBスキーマは、歯科計画は患者IDを持たなければならないように、私はdental_plan[]にそのプロパティを追加する方法が必要ですが、これらのソリューションは失敗しているように見える作られているのでオブジェクトなどとしてそれらを得る。通常、私はエラーIndirect modification of overloaded property Illuminate\Http\Request has no effectを得る。これを行う正しい方法は何ですか?

EDIT:あなたの関係は次のことができ、正しく設定している場合は

MyModel::create([['specific_field' => $spec], $request->all()]); 

答えて

2

はそうすることができますように、Laravelモデルである特定の一つの一般的なフィールドを追加することが可能にこのようなものです操作を行います。

$patient->dentalPlan()->create($request->input('dental_plan')); 

ないなら、あなたは自分のパラメータを追加する前に、変数に配列を代入する必要があります。

$dentalPlan = $request['dental_plan']; 
$dentalPlan['patent_id'] = $patient->id; 

次に、あなたは$dentalPlan

1

まず、あなたが実際に$request->propertyから最終的にpublic function __get(ある魔法のメソッドをオブジェクトにアクセスする方法)で通常通りに操作することを可能にされていない{}を、あなたのインスタンスを作成することができます配列でも、配列のように見えます。

正しいことは、入力から配列を定義し、その配列に必要な新しいキー値を追加することです。それを実際に保存するか、必要な操作をするために使用します。

$inputAttrs = $request->dental_plan; 
$inputAttrs['patient_id'] = $yourPatientId; 
関連する問題