更新:2024/12/03

【Laravel】Eloquent ORMの使い方と意味について

はるか
はるか
Eloquent ORM…SQL使わずにデータ操作できるツール。
ふゅか
ふゅか
オブジェクト指向っぽくデータベース操作ができるのよね。コードがスッキリするし、すごーく便利!

1. Eloquent ORMの使い方

Eloquent ORM(Object-Relational Mapping)は、Laravelが提供するデータベース操作のためのツールです。SQLを直接記述する必要がなく、オブジェクト指向プログラミングのスタイルでデータベース操作を行えます。この記事では、Eloquent ORMの基本的な使い方と、実際のコード例を交えた解説を行います。

2. 基本的な使い方

Laravelのモデルを使用してデータベース操作を行う方法を詳しく解説します。データの取得から作成、更新、削除までの基本的な操作を例を交えて説明します。

2.1. モデルの作成

データベースの操作を行うために、以下のコマンドでモデルを作成します。

php artisan make:model Post

このコマンドでapp/Models/Post.phpというファイルが生成されます。

2.2. データの取得

データベースからデータを取得するには、以下のような方法があります。それぞれのケースに応じて使い分けてください。

2.2.1. すべてのデータを取得する方法

データベースの特定のテーブルに保存されているすべてのデータを取得するには、allメソッドを使用します。

use App\Models\Post;

// すべてのデータを取得
$posts = Post::all();

2.2.2. 特定のIDのデータを取得する方法

特定のIDに紐づくデータを取得するには、findメソッドを使います。

$post = Post::find(1);

2.2.3. 条件に一致するデータを取得する方法

条件に基づいてデータを絞り込むには、whereメソッドを使用します。以下は、「status」が「published」のデータを取得する例です。

$publishedPosts = Post::where('status', 'published')->get();

2.3. データの取得

新しいデータを作成する方法には、いくつかのアプローチがあります。

2.3.1. 新しいインスタンスを使った方法

まず、モデルのインスタンスを作成し、それに必要な値を設定して保存します。

use App\Models\Post;

$post = new Post();
$post->title = '新しい記事';
$post->content = '記事の内容';
$post->status = 'draft';
$post->save();

2.3.2. createメソッドを使った方法

createメソッドを使用すると、一行でデータを保存できます。この方法では、あらかじめモデルで$fillableプロパティまたは$guardedプロパティを設定する必要があります。

Post::create([
    'title' => '新しい記事',
    'content' => '記事の内容',
    'status' => 'draft'
]);

createメソッドを使用するには、モデル内で以下のように$fillableプロパティに許可するカラムを明示的に指定しておく必要があります。これにより、セキュリティを強化し、不正なデータの挿入を防ぎます。

protected $fillable = ['title', 'content', 'status'];
ふゅか
ふゅか
newならインスタンス作成、createなら一行で完了。fillableの設定を忘れちゃダメよ!

2.4. データの更新

既存のデータを更新するには、次の方法があります。

2.4.1. インスタンスを使った更新

まず、特定のデータを取得し、変更したいプロパティを設定した後にsaveメソッドを呼び出します。

$post = Post::find(1);
$post->status = 'published';
$post->save();

2.4.2. updateを使った更新

複数のデータを一括で更新する場合は、updateメソッドを使用するのが便利です。以下は、「status」が「draft」のデータをすべて「published」に変更する例です。

Post::where('status', 'draft')->update(['status' => 'published']);

2.5. データの削除

不要なデータを削除するには、deleteメソッドを使用します。

2.5.1. 特定のデータを削除

特定のデータを削除する場合、まずそのデータを取得し、deleteメソッドを呼び出します。

$post = Post::find(1);
$post->delete();

2.5.2. 複数のデータを削除

条件に一致するデータをまとめて削除することも可能です。以下は、「status」が「draft」のデータをすべて削除する例です。

Post::where('status', 'draft')->delete();

 

PR