こんにちは、後藤です。
Laravelの公式ドキュメントを見ていると、まだまだ知らない言葉がたくさん出てきます。「実際に使ってるんだけど、意味をよく理解していない…」そんなことがよくありそうなので、今回はLaravelクエリビルダとEloquentについて紹介していきます。
クエリビルダ
クエリビルダは、SQLクエリの生成を支援します。Eloquentよりもシンプルな操作が可能で、高度なクエリも柔軟に記述できます。
集計関数
クエリビルダでは、集計関数を簡単に使うことができます。
$count = DB::table('users')->count();
$average = DB::table('orders')->avg('price');
サブクエリ
サブクエリもシンプルに記述できます。
$latestPosts = DB::table('posts')
->select('user_id', DB::raw('MAX(created_at) as last_post_created_at'))
->groupBy('user_id');
$users = DB::table('users')
->joinSub($latestPosts, 'latest_posts', function ($join) {
$join->on('users.id', '=', 'latest_posts.user_id');
})->get();
Eloquent ORM
EloquentはLaravelのORMで、オブジェクト指向プログラミングを活用してデータベース操作を簡潔にします。
モデルの関連付け
Eloquentの強みは、モデル間のリレーションシップを簡単に扱えることです。
class Post extends Model
{
public function user()
{
return $this->belongsTo('App\Models\User');
}
}
// 例: ユーザーに関連する投稿を取得
$posts = User::find(1)->posts;
モデルのイベント
データベースの操作に対して自動でトリガされるイベントも扱いやすいです。
class User extends Model
{
protected static function booted()
{
static::created(function ($user) {
// 新規ユーザーが作成された後の処理
});
}
}
まとめ
プログラミングを学習する上で、手を動かすことも大事ですが、やっていることの意味を理解する時間も大切だと思います。皆さんもぜひ公式ドキュメントを見返す時間をつくって、理解を深めていきましょう!