データを上書きする際に問題が発生しています。私はDocument ModelとDocumentData Modelを持っています。ドキュメントは多くのDocumentDataを持つことができます。 だから私は、データキャプチャのフォームを持っている、と私出力は、私は、次のLaravel 5 - 保存されたデータを上書きしました
array:8 [▼
"_token" => "UHTN66xH4ChHpaxWAt4hWYFfpwUyjo6EunLp2iuV"
"whatData" => "rgfterter"
"whoData" => "tertertertert"
"startDate" => "28-04-2016"
"deliveryDate" => "30-04-2016"
"whyData" => "wefrwerwe"
"howData" => "rwerwerwer"
"filePath" => array:2 [▼
0 => UploadedFile {#30 ▼
-test: false
-originalName: "image.png"
-mimeType: "image/png"
-size: 788038
-error: 0
}
1 => UploadedFile {#31 ▼
-test: false
-originalName: "image2.png"
-mimeType: "image/png"
-size: 1091127
-error: 0
}
]
]
のようなものを取得する要求がどのような私は、行う必要があることは文書に
$document = new Document();
$document->projectId = $project->id;
$document->name = 'Test Document';
$document->save();
を作成している場合は、私の中の関数を作成し、上記のデータを使用してdocumentDataを実行します。 DocumentDataには本質的にキー/値があり、キーは入力ラベルであり、値は入力データです。 は、現時点では私はこの
$documentData = new DocumentData();
$documentData->documentId = $document->id;
foreach ($inputs as $key => $value) {
if($key !== '_token' && $key !== 'filePath') {
$documentData->key = $key;
$documentData->value = $value;
}
$documentData->save();
}
$fileString = "";
if (Input::hasFile('filePath')) {
$files = Input::file('filePath');
foreach($files as $file) {
$file->move(public_path('uploads'), $file->getClientOriginalName());
$fileString .= public_path('uploads') . '/' . $file->getClientOriginalName();
$documentData->key = 'File Path';
$documentData->value = $fileString;
$documentData->save();
}
}
をやっているドキュメントを微作成されますが、私だけをDocumentDataのための1行を取得しています - 最後にアップロードされたファイルのパスを。したがって、他の行が上書きされているように見えます。 すべての入力がデータベース内で正しく記録されるようにするにはどうすればよいですか?物事は簡単に自分の雄弁モデルにおけるいくつかの関係を設定するようにするに
おかげ
1.リレーションシップを正しく設定すると、 '$ documentData-> documentId = $ document-> id;'は不要です。 '$ documentData-> document() - > saveMany()' - 2.私は[Eloquentのドキュメントを読む](https://laravel.com/docs/master/eloquent-relationships#introduction)をお勧めします。それほど遠くない。 3。入力データとプロパティの設定をループすることはお勧めしません。 – ash
私はあなたの質問を正しく理解しているのかどうか分かりませんが、 'DocumentData'の複数のインスタンスを作成しようとしていますか?そうであれば間違った方向に行きます。最終的なコードスニペットは、アップロードされたdbごとに新しいDocumentDataエントリを作成しません。最後にアップロードされたファイルのみを表示するのと同じエントリに書き込みを続けます。複数のインスタンスを作成するには、forループ内に新しいインスタンスを新規作成する必要があります。いずれにしても、灰が推奨する関係を参照するようにする必要があります。 – haakym