Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Skop Global dalam Laravel (StepWise).

Skop Global dalam Laravel (StepWise).

Barbara Streisand
Barbara Streisandasal
2024-09-24 06:20:32503semak imbas

Global Scope in Laravel (StepWise).

Skop Global ialah konsep penting dalam Laravel, membolehkan penggunaan semula keadaan Eloquent sepanjang permohonan anda. Dengan melaksanakan Skop Global, anda boleh menggunakan syarat khusus pada pertanyaan merentas semua model, mempromosikan penggunaan semula dan ketekalan kod. Sebaliknya, Skop Tempatan terhad kepada satu model. Dalam tutorial ini, kami akan menumpukan pada mencipta dan menggunakan Skop Global dalam Laravel.

  1. Dalam Langkah ini, kami akan mencipta Kelas Global di dalam a app/Skop/ActiveScope
<?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. Kini Tentukan ActiveScope dalam Model Pengguna. Kita Harus mengatasi kaedah but model tertentu dan menggunakan kaedah 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);
    }
}

Selepas menambah ActiveScope dalam model, User::all() akan menjana SQL berikut.

select * from `users` where `is_active` = '1'

Mungkin terdapat senario di mana anda ingin mengambil semua data tanpa menggunakan skop global. Dalam Laravel, anda boleh memintas skop global dan mengambil semua data dengan menggunakan kaedah withoutGlobalScope.

User::withoutGlobalScope(ActiveScope::class)->get();

Jika anda ingin mengalih keluar berbilang atau semua skop global yang digunakan pada model, anda boleh menggunakan kaedah withoutGlobalScopes dalam Laravel. Kaedah ini membolehkan anda memintas semua skop global atau menentukan skop yang ingin anda alih keluar. Berikut ialah contoh:

// Remove all of the global scopes...
User::withoutGlobalScopes()->get();
// Remove some of the global scopes...
User::withoutGlobalScopes([
    ActiveScope::class, AgeScope::class
])->get();

Dan jika anda menyukai kandungan dan ingin menyokong artikel yang lebih hebat, pertimbangkan untuk membeli saya kopi! ☕️? Sokongan anda bermakna dunia bagi saya dan membantu memastikan pengetahuan mengalir. Anda boleh melakukannya di sini: ? Belikan Saya Kopi

Atas ialah kandungan terperinci Skop Global dalam Laravel (StepWise).. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Watak Tambahan dalam RentetanArtikel seterusnya:Watak Tambahan dalam Rentetan