Cakephpからlaravel移行組です。
Cakephpではpost HasMany photoの関係で
記事投稿する際に画像テーブルにsaveallで一回で保存できました。
laravelではどうすればいいのかわからず調べていましたが2回保存する以下の方法に落ち着きました。
もっと良い方法があるのでしょうか?みなさんどうされてますか?
普通にフォーム部分
<form method="POST" action="{{ url('/posts') }}" accept-charset="UTF-8" enctype="multipart/form-data">
<input type="text" name="name">
<textarea type="textarea" name="content"></textarea>
<input type="file" name="upfile">
<input type="submit" value="create">
PostsController
public function store(Request $request)
{
$requestData = $request->all();
$postSaveData['name'] = $requestData['name'];
$postSaveData['content'] = $requestData['content'];
$post = new Post;
$post->fill($postSaveData);
$post->save();
//画像ファイルを取得する処理、画像の保存処理は割愛
$originalfileName = $requestData['upfile']->getClientOriginalName();
$photoSaveData['filename'] = $originalfileName;
$photo = new Photo;
$photo->post()->associate($post);
$photo->fill($photoSaveData);
$photo->save();
return redirect('posts')->with('flash_message', 'Post added!');
}