Automatically generate scope traits for Laravel Models based on foreign key relationships.
dmdboi/laravel-autoscopes is a Laravel package for automatically generate scope traits for laravel models based on foreign key relationships..
It currently has 0 GitHub stars and 48 downloads on Packagist (latest version 1.0.1).
Install it with composer require dmdboi/laravel-autoscopes.
Discover more Laravel packages by dmdboi
or browse all Laravel packages to compare alternatives.
Last updated
Automatically generate type-safe scope traits for Laravel models based on foreign key relationships.
composer require dmdboi/laravel-autoscopes --dev
Generate scope traits for your models:
# Creates HasUserScopes trait and applies to models with user_id column
php artisan scopes:generate User
# Use the generated scopes
Post::forUser(1)->get();
Post::forUserIn([1, 2, 3])->get();
Post::exceptUser(1)->get();
Comment::forUser(1)->forPost(5)->get();
Given models with foreign keys:
class Post extends Model {
protected $fillable = ['user_id', 'title', 'content'];
}
class Comment extends Model {
protected $fillable = ['user_id', 'post_id', 'content'];
}
Running php artisan scopes:generate User:
HasUserScopes trait in app/Models/Traits/user_id column (via database schema or $fillable)Generated trait includes:
<?php
declare(strict_types=1);
namespace App\Models\Traits;
use Illuminate\Database\Eloquent\Builder;
trait HasUserScopes
{
/**
* @param Builder<\Illuminate\Database\Eloquent\Model> $query
* @param int|string $userId
* @return Builder<\Illuminate\Database\Eloquent\Model>
*/
public function scopeForUser(Builder $query, int|string $userId): Builder
{
return $query->where('user_id', $userId);
}
// scopeForUserIn() and scopeExceptUser() also included
}
scopes:generate {model} - Generate a scope trait and auto-apply to related models
php artisan scopes:generate User
php artisan scopes:generate Post
scopes:add {trait} - Apply existing trait to models (validates model exists)
php artisan scopes:add HasUserScopes
php artisan scopes:add HasPostScopes
strict_types=1, generic Builder<Model> type hints# Run all tests
composer test
# Static analysis
composer analyse
# Code style
composer format
See CHANGELOG for recent changes.
The MIT License (MIT). See License File for details.