dmdboi/laravel-autoscopes
最新稳定版本:1.0.1
Composer 安装命令:
composer require --dev dmdboi/laravel-autoscopes
包简介
Automatically generate scope traits for Laravel Models based on foreign key relationships.
README 文档
README
Automatically generate type-safe scope traits for Laravel models based on foreign key relationships.
Installation
composer require dmdboi/laravel-autoscopes --dev
Quick Start
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();
How It Works
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:
- Creates
HasUserScopestrait inapp/Models/Traits/ - Auto-detects Post and Comment have
user_idcolumn (via database schema or $fillable) - Applies trait to both models automatically
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 }
Commands
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
Features
- Type Safe -
strict_types=1, genericBuilder<Model>type hints - Auto-Detection - Finds models with matching foreign keys
- Format Preserving - PHP-Parser preserves your code formatting
- Atomic - File locking prevents concurrent modification issues
- Secure - Path traversal protection built-in
Testing
# Run all tests composer test # Static analysis composer analyse # Code style composer format
Changelog
See CHANGELOG for recent changes.
Credits
License
The MIT License (MIT). See License File for details.
统计信息
- 总下载量: 37
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-03-05