withAggregate method

Under the hood, the withAvg/withCount/withSum and other methods in Eloquent use the 'withAggregate' method. You can use this method to add a subselect based on a relationship

// Eloquent Model
class Post extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
 
// Instead of eager loading all users...
$posts = Post::with('user')->get();
 
// You can add a subselect to only retrieve the user's name...
$posts = Post::withAggregate('user', 'name')->get();
 
// This will add a 'user_name' attribute to the Post instance:
$posts->first()->user_name;

Tip given by @pascalbaljet

Recent New Courses