08Eloquent ORM
Eloquent ORMとは?
Eloquent ORM(Object-Relational Mapping)は、Laravelに組み込まれたデータベース操作のための機能です。
データベースのテーブルをモデルとして扱い、オブジェクト指向的にデータを操作できます。
では早速Eloquent ORMについて学んでいきましょう。
全データを取得
$users = User::all();解説:
allメソッドはテーブル内のすべてのレコードを取得します。- 結果はコレクション形式で返されるため、ループなどで操作が可能です。
条件付き取得
$users = User::where('email', 'example@example.com')->get();解説:
whereメソッドを使って条件を指定します。getメソッドで結果を取得します。- この例では、
emailがexample@example.comのレコードを取得します。
データの作成
新規レコードを保存
$user = new User();
$user->name = '山田 太郎';
$user->email = 'yamada@example.com';
$user->save();解説:
newを使って新しいモデルインスタンスを作成します。- 属性を指定し、
saveメソッドでデータベースに保存します。
createを使用
User::create([
'name' => '山田 太郎',
'email' => 'yamada@example.com',
]);解説:
createメソッドを使えば、複数の属性を一度に指定可能です。$fillableプロパティをモデルで定義している必要があります。
データの更新
レコードの更新
$user = User::find(1);
$user->name = '山田 太郎';
$user->save();解説:
findメソッドで特定のIDのレコードを取得し、属性を変更します。- 変更後、
saveメソッドで更新を保存します。
データの削除
レコードの削除
$user = User::find(1);
$user->delete();解説:
deleteメソッドを使ってレコードを削除します。- レコードが完全に削除されます(後述するソフトデリートを有効にする場合は別)。
4. リレーション
1対多リレーション
public function posts()
{
return $this->hasMany(Post::class);
}解説:
- このメソッドは
Userモデルから関連するPostモデルを取得します。 hasManyメソッドは「1対多」の関係を表します。
リレーションを利用したデータ取得
$user = User::find(1);
$posts = $user->posts;解説:
- リレーションメソッドを呼び出すことで、関連するデータを簡単に取得できます。
- この例では、特定のユーザーが持つ投稿一覧を取得します。
コメントを残す