LaravelはPHPのフレームワークとして非常に人気があり、多くの開発者にとってデータベース操作は日常的な作業です。Laravelには主に二つの方法でデータベースにアクセスするためのツールがあります。それがEloquent ORM(Object-Relational Mapping)とクエリビルダーです。今回はこれら二つのツールを中心に、Laravelでのデータベース操作の基本について解説します。
Eloquent ORMとは?
EloquentはLaravelが提供するORMで、データベースレコードとPHPオブジェクトをスムーズに連携させることができます。Eloquentを使うと、データベースのテーブルごとにモデルを作成し、そのモデルを通じてデータベース操作を行うことが可能です。このアプローチにより、コードがより直感的になり、データ操作が自然な形で記述できます。
Eloquentの基本的な使い方
Eloquentを使用するためには、最初にデータベースのテーブルに対応するモデルを作成します。例えば、「users」テーブルのためのユーザーモデルは以下のように作成します。
php artisan make:model User
このコマンドを実行すると、app/Models/User.phpというファイルが生成されます。ここでEloquent ModelとしてUserクラスを定義します。
レコードの取得
Eloquentではすべてのレコードを取得するためにallメソッドを利用します。
$users = User::all();
一つのレコードを取得したい場合はfindやwhereメソッドを使用します。
$user = User::find(1);
$user = User::where('email', 'example@example.com')->first();
レコードの作成
新しいレコードを作成するには、モデルインスタンスを生成し、saveメソッドを呼び出します。
$user = new User;
$user->name = 'John Doe';
$user->email = 'johndoe@example.com';
$user->save();
createメソッドを使用して一度にレコードを作成することも可能です。ただし、$fillableまたは$guardedプロパティによる属性制約を考慮する必要があります。
User::create([
'name' => 'John Doe',
'email' => 'johndoe@example.com'
]);
レコードの更新
更新が必要な場合は、取得したインスタンスに対して属性を変更し、saveメソッドを再度呼び出します。
$user = User::find(1);
$user->email = 'newemail@example.com';
$user->save();
レコードの削除
削除するには、取得したインスタンスに対してdeleteメソッドを呼び出します。
$user = User::find(1);
$user->delete();
複数のレコードを一度に削除する場合は、destroyメソッドを利用します。
User::destroy([1, 2, 3]);
クエリビルダーとは?
クエリビルダーは、データベースに対する疎な接続を提供するフレキシブルな機能であり、生のSQLクエリではなく、メソッドチェーン形式で多様なデータ操作を可能にします。データベースの特定のテーブルに依存せずに、条件に基づいたクエリを形成できます。
クエリビルダーの基本的な使い方
クエリビルダーを使用するには、DBファサードを利用します。
レコードの取得
例えば、全レコードを取得する場合:
$users = DB::table('users')->get();
一部のレコードを取得したい場合:
$user = DB::table('users')->where('email', 'example@example.com')->first();
レコードの挿入
新しいレコードを挿入するには、insertメソッドを使用します。
DB::table('users')->insert([
'name' => 'Jane Doe',
'email' => 'janedoe@example.com'
]);
レコードの更新
既存のレコードを更新するには、updateメソッドを利用します。
DB::table('users')->where('id', 1)->update([
'email' => 'newemail@example.com'
]);
レコードの削除
レコードを削除するには、deleteメソッドを使用します。
DB::table('users')->where('id', 1)->delete();
Eloquentとクエリビルダーの使い分け
Eloquentは、リレーションシップなどの高度なデータ操作を容易にするために設計されており、モデルレベルでのデータ操作が必要な場合には非常に有効です。一方で、クエリビルダーはデータ量が多い場合やテーブル結合など、効率的なクエリが必要な場面でパフォーマンスを向上させることができます。
場面に応じてEloquentとクエリビルダーを選択することで、Laravelでのデータベース操作を最大限に活用することができます。業務の要件に応じて、最適なツールを選び、開発の効率化を図ってください。


コメント