syntech/globalscopes

一个Laravel包,用于向所有模型添加通用模型作用域

1.0.0 2024-08-03 03:54 UTC

This package is auto-updated.

Last update: 2024-09-21 01:08:22 UTC


README

一个Laravel包,用于在不修改单个模型的情况下添加全局模型作用域和属性。

安装

您可以通过Composer安装此包

composer require syntech/globalscopes

配置

发布配置文件

php artisan vendor:publish --provider="Syntech\GlobalScopes\GlobalScopesServiceProvider"

这将创建一个位于您的Laravel应用程序配置目录中的globalscopes.php配置文件。

示例配置

return [

    /*
    |--------------------------------------------------------------------------
    | Global Query Methods
    |--------------------------------------------------------------------------
    |
    | Define global query methods for all Eloquent models.
    |
    */

    'methods' => [
        'approved' => function ($query) {
            return $query->where('status', 1)->where('approved', 1);
        },
    ],

    /*
    |--------------------------------------------------------------------------
    | Global Attributes
    |--------------------------------------------------------------------------
    |
    | Define global attributes for all Eloquent models.
    |
    */

    'attributes' => [
        'image' => function ($value) {
            return $value ? $value : asset('images/default.png');
        },
    ],

    /*
    |--------------------------------------------------------------------------
    | Global Scopes
    |--------------------------------------------------------------------------
    |
    | Define global scopes to be applied to all Eloquent models.
    |
    */

    'scopes' => [
        'approved' => 'status = 1 AND approved = 1',
    ],
];

用法

添加全局作用域

一旦配置完毕,全局作用域将自动应用于所有Eloquent模型。

全局属性可以像在模型上直接定义一样访问

$customers = Customer::active()->get();

return $customers; // 使用全局属性逻辑