Eloquent

記事の内容

概要

LaravelのORMで、データベーステーブルをモデルとして扱い、クエリを簡潔に書くためのツールです。

レコードの取得・検索系

find

主キーで単一レコードを取得します。

$user = User::find(1);
// User { id: 1, name: 'John Doe' }

first

クエリに一致する最初のレコードを取得します。

$user = User::where('email', 'tomoji@example.com')->first();
// User { id: 1, email: 'tomoji@example.com' }

get

条件に一致するすべてのレコードを取得します。

$users = User::where('status', 'active')->get();
// Collection [ User { id: 1, status: 'active' }, User { id: 2, status: 'active' } ]

all

テーブル内の全レコードを取得します。

$users = User::all();
// Collection [ User { id: 1, name: 'tomoji' }, User { id: 2, name: 'hamaji' } ]

pluck

特定のカラムの値だけを取得します。

$emails = User::pluck('email');
// Collection [ 'tomoji@example.com', 'hamaji@example.com' ]

findOrFail

主キーでレコードを取得し、見つからなければ例外を投げます。

$user = User::findOrFail(1);
// User { id: 1, name: 'tomoji' }

firstOrFail

クエリに一致する最初のレコードを取得し、見つからなければ例外を投げます。

$user = User::where('email', 'tomoji@example.com')->firstOrFail();
// User { id: 1, email: 'tomoji@example.com' }

レコードの作成・更新系

create

レコードを作成します。

$user = User::create([
    'name' => 'tomoji',
    'email' => 'tomoji@example.com',
]);

update

既存のレコードを更新します。

$user = User::find(1);
$user->update(['name' => 'super tomoji']);
// true

firstOrCreate

条件に一致するレコードを取得し、見つからない場合は新しいレコードを作成します。

$user = User::firstOrCreate(['email' => 'tomoji@example.com'], ['name' => 'tomoji']);

updateOrCreate

条件に一致するレコードを更新し、見つからない場合は作成します。

$user = User::updateOrCreate(
    ['email' => 'tomoji@example.com'],
    ['name' => 'tomoji']
);

レコードの削除系

delete

レコードを削除します。

$user = User::find(1);
$user->delete();
// true

destroy

複数の主キーでレコードを一括削除します。

User::destroy([1, 2, 3]);
// 3 (削除されたレコードの数)

forceDelete

ソフトデリートされたレコードを完全に削除します。

$user = User::withTrashed()->find(1);
$user->forceDelete();
// true

条件検索系

where

条件に一致するレコードをフィルタリングします。

$users = User::where('status', 'active')->get();

orWhere

複数の条件のいずれかに一致するレコードを取得します。

$users = User::where('status', 'active')->orWhere('email', 'super-tomoji@example.com')->get();
// Collection [ User { id: 1, status: 'active' }, User { id: 3, email: 'super-tomoji@example.com' } ]

whereIn

特定の値のリストに一致するレコードを取得します。

$users = User::whereIn('id', [1, 2, 3])->get();
// Collection [ User { id: 1 }, User { id: 2 }, User { id: 3 } ]

whereNull

指定されたカラムがNULLのレコードを取得します。

$users = User::whereNull('email_verified_at')->get();
// Collection [ User { id: 1, email_verified_at: null }, User { id: 2, email_verified_at: null } ]

ソフトデリート系

withTrashed

ソフトデリートされたレコードも含めて取得します。

$users = User::withTrashed()->get();
// Collection [ User { id: 1, deleted_at: null }, User { id: 2, deleted_at: '2024-09-01' } ]

onlyTrashed

ソフトデリートされたレコードのみを取得します。

$users = User::onlyTrashed()->get();
// Collection [ User { id: 2, deleted_at: '2024-09-01' } ]

restore

ソフトデリートされたレコードを復元します。

$user = User::withTrashed()->find(2);
$user->restore();
// true
記事の内容
閉じる