記事の内容
概要
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