Eloquentについて
Laravelフレームワークに組み込まれているデータベースを操作するための便利なツールのようなものです
具体的にはデータベースのテーブルと対応するモデルクラスを使ってデータベースを操作する認識
-
モデルとはテーブルの内容を定義したクラスのこと
-
Eloquentのメリット
- モデル間の関連性、1対1、1対多、多対多などを簡単に定義し、操作できること
例 usersテーブルとfoodsテーブルが1対多の場合、それぞれのモデルクラスに下記を追記
// Userクラス 親
public function foods()
{
return $this->hasMany(Food::class);
}
//Foodクラス 子
public function user()
{
return $this->belongsTo(User::class);
}
Eloquentを使ったデータベースを操作する書き方
//ローカル環境で実際にphp artisan tinkerを使ってみてみます
// Userのidが1を取得
$user = User::find(1);
// Userのidが1の人が持ってるfoodsの情報を全部取得する
$foods = $user->foods;
//下記のコードでも上記と同じ結果
// $foods = User::find(1)->foods;
// $foods = Food::where('user_id', 1)->get();
// Userのidが1の人が持ってるfoodsのinfoのデータが「test」かつlimit_dateが「2023-05-31」のレコードを取得
$foods = $user->foods->where('info', 'test')
->where('limit_date', '2023-05-31');
データベースを操作する方法はEloquent以外にもSQLクエリとクエリビルダがあるけど、リレーション周りの紐付けが面倒だと思うので自分はほぼ使ってません。特に複雑な関連構造のだと書くコードも面倒なものになる認識
だけどSQLの書き方を網羅してるとEloquentでもより明確にデータベースを操作できるのでEloquent書きながらでも裏でどんなSQL構文が処理されてるか意識するように習慣づけていきます!