ホームページ > バックエンド開発 > PHPチュートリアル > Laravel のグローバル スコープ (StepWise)。

Laravel のグローバル スコープ (StepWise)。

Barbara Streisand
リリース: 2024-09-24 06:20:32
オリジナル
665 人が閲覧しました

Global Scope in Laravel (StepWise).

グローバル スコープは Laravel の重要な概念であり、アプリケーション全体で Eloquent 条件を再利用できるようになります。グローバル スコープを実装すると、すべてのモデルにわたるクエリに特定の条件を適用でき、コードの再利用と一貫性が促進されます。対照的に、ローカル スコープは単一のモデルに限定されます。このチュートリアルでは、Laravel でのグローバル スコープの作成と利用に焦点を当てます。

  1. このステップでは、内部にグローバル クラスを作成します。 アプリ/スコープ/アクティブスコープ
<?php

namespace app\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;

class ActiveScope implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        // Define your global condition here
        $builder->where('is_active', '=', '1');

        //or we can write
        $builder->whereIsActive('1');

    }
}
ログイン後にコピー
  1. 次に、ユーザー モデルで ActiveScope を定義します。特定のモデルのブート メソッドをオーバーライドし、addGlobalScope メソッドを使用する必要があります。
<?php

namespace App;

use App\Scopes\AgeScope;
use Illuminate\Database\Eloquent\Model;
use App\Scopes\ActiveScope;

class User extends Model
{
    /**
     * The "booting" method of the model.
     *
     * @return void
     */
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope(new ActiveScope);
    }
}
ログイン後にコピー

モデルに ActiveScope を追加すると、User::all() は次の SQL を生成します。

select * from `users` where `is_active` = '1'
ログイン後にコピー

グローバル スコープを適用せずにすべてのデータをフェッチしたいシナリオが考えられます。 Laravel では、withoutGlobalScope メソッドを使用して、グローバル スコープをバイパスし、すべてのデータをフェッチできます。

User::withoutGlobalScope(ActiveScope::class)->get();
ログイン後にコピー

モデルに適用されている複数またはすべてのグローバル スコープを削除したい場合は、Laravel の withoutGlobalScopes メソッドを使用できます。この方法を使用すると、すべてのグローバル スコープをバイパスしたり、削除するグローバル スコープを指定したりできます。以下に例を示します:

// Remove all of the global scopes...
User::withoutGlobalScopes()->get();
ログイン後にコピー
// Remove some of the global scopes...
User::withoutGlobalScopes([
    ActiveScope::class, AgeScope::class
])->get();
ログイン後にコピー

コンテンツが気に入って、さらに素晴らしい記事をサポートしたい場合は、私にコーヒーを買うことを検討してください。 ☕️?あなたのサポートは私にとって非常に重要であり、知識の流れを維持するのに役立ちます。ここでそれを行うことができます: ?コーヒー買ってきて

以上がLaravel のグローバル スコープ (StepWise)。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート