LoginSignup
2
1

More than 5 years have passed since last update.

Laravelで関連モデルへの保存

Last updated at Posted at 2019-01-05

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!');
}

参考URL

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1