// app/Models/User.php class User extends Model { public function posts() { return $this->hasMany(Post::class); } } // app/Models/Post.php class Post extends Model { public function user() { return $this->belongsTo(User::class); } } // In a controller or service // Load users and their published posts, ordered by creation date $users = User::with(['posts' => function ($query) { $query->where('published', true)->orderBy('created_at', 'desc'); }])->get(); foreach ($users as $user) { echo $user->name . ": "; foreach ($user->posts as $post) { echo "- " . $post->title . " "; } } // Or eager loading multiple relationships with conditions $orders = Order::with([ 'customer', 'items' => function ($query) { $query->where('quantity', '>', 0); }, 'payments' => function ($query) { $query->where('status', 'completed'); } ])->get();