Laravelリーレション先のデータ個数を集計 / hasMany

Laravelのeloquentは強力なORMです。

例えば、hasManyでリレーション先につながってデータの個数を集計して、オブジェクトへ返してくれる方法があります。

Modelでリレーション記述
    public function drinkNumber()
    {
        return $this->hasMany(Join::class, 'drink_id', 'id');
    }
modelからリレーション先を自動集計したデータをオブジェクトへ
    $drinks = Drink::withCount('drinkNumber')->where('status', 1)->get();

これで、$drinksの中には、Drink Modelのオブジェクトに加えて、集計したデータも一緒に含まれます。

カラム名は下記のルールで、名称付けられます。

リレーション名_count

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です