Search code examples
phpmysqllaraveleloquent

count with load Laravel


Is it possible to count inside load

I have situation like this:

$offer->load([
           'coupons', 'coupons.couponItems' => function ($query) {
            $query->select('id', 'name');
        }, 'coupons.userCoupons' => function ($query) {
            $query->select('id', 'coupon_id');
        },
    ]);

I want to count userCoupons

If not, what is the best solution? Thank you


Solution

  • You can try adding a ->loadCount() after your load call. Unfortunately, Laravel doesn't support dot notation at that point due to complexity, so ->loadCount('coupons.userCoupons') will not work.

    You can add a HasManyThrough relationship on your Offer model, however, for instance

        public function UserCoupons(): HasManyThrough
        {
           return $this->hasManyThrough(UserCoupon::class, Coupon::class);
        }
    

    You can then just do a $offer->loadCount('UserCoupons').