namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { /** * Scope a query to only include published posts. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopePublished($query) { return $query->where('is_published', true); } /** * Scope a query to only include posts by a given user. * * @param \Illuminate\Database\Eloquent\Builder $query * @param int $userId * @return \Illuminate\Database\Eloquent\Builder */ public function scopeByUser($query, $userId) { return $query->where('user_id', $userId); } } // --- Usage in a Controller or elsewhere --- // Get all published posts $publishedPosts = Post::published()->get(); // Get all published posts by a specific user $userPosts = Post::published()->byUser(1)->get(); // Combine with other query methods $recentPublishedPosts = Post::published()->orderByDesc('created_at')->limit(5)->get();