Skop Global dalam Laravel (StepWise).

Barbara Streisand
Lepaskan: 2024-09-24 06:20:32
asal
616 orang telah melayarinya

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');

    }
}
Salin selepas log masuk
  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);
    }
}
Salin selepas log masuk

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

select * from `users` where `is_active` = '1'
Salin selepas log masuk

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();
Salin selepas log masuk

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();
Salin selepas log masuk
// Remove some of the global scopes...
User::withoutGlobalScopes([
    ActiveScope::class, AgeScope::class
])->get();
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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 terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!