0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelの create() メソッドの役割と使い方【Eloquentでのデータ登録】

Last updated at Posted at 2025-04-02

はじめに

Laravelでデータベースに新しいレコード(データ)を保存するとき、
以下のようなコードを見かけたことはありませんか?

Post::create([
    'title' => '新しい投稿',
    'body' => '本文内容',
    'user_id' => 1,
]);

この create() メソッド、簡潔で便利ですが「実際に何をしているの?」と疑問に感じる方もいると思います。

この記事では、Laravelの create() メソッドの役割・仕組み・使い方を、まとめました。

①create() メソッドとは?

  • Eloquentモデルを使って、1件のレコードを一括で作成・保存できるメソッドです。
  • 内部的には new + fill + save をまとめてやってくれる便利メソッドです。

②基本的な使い方

例)投稿(Post)モデルの場合

Post::create([
    'title' => 'テスト投稿',
    'body' => 'これは投稿本文です。',
    'user_id' => Auth::id(),
]);

これで、posts テーブルに新しい投稿レコードが追加されます。

③注意:$fillable が必要!

create() を使うには、モデル側で代入を許可するカラムを $fillable で明示する必要があります。

Postモデルの例(app/Models/Post.php)

class Post extends Model
{
    protected $fillable = ['title', 'body', 'user_id'];
}

これを設定しないと、MassAssignmentException (大量代入エラー)が発生します。

④なぜ $fillable が必要なの?

Laravelでは「ホワイトリスト方式」でセキュリティを守っています。
つまり、明示的に許可したカラムしか create() で登録できない仕組みです。

NGな例($fillable 未設定)

Post::create($request->all()); // セキュリティリスクあり!

→ 悪意のあるリクエストで admin = 1 などの値が送られてしまう危険があります。

⑤コントローラーでの活用例

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|string|max:255',
        'body' => 'required|string',
    ]);

    $validated['user_id'] = Auth::id();

    Post::create($validated);

    return redirect()->route('posts.index')->with('success', '投稿を作成しました!');
}

⑥create() の代わりに使える書き方(参考)

$post = new Post();
$post->title = 'タイトル';
$post->body = '本文';
$post->user_id = Auth::id();
$post->save();

→ こちらはより「手続き的」な書き方。
細かく処理したいときはこちらの方が適しています。

⑦まとめ

IMG_7750.jpeg
create() メソッドは、LaravelのEloquentを使う上でとても重要な基本の1つです。
正しく理解して、セキュアかつ効率的なデータ登録を実現しましょう!

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?