Rumah > pangkalan data > tutorial mysql > ORM Fasih Laravel dalam Skop Separa Pertanyaan Bangla)

ORM Fasih Laravel dalam Skop Separa Pertanyaan Bangla)

Mary-Kate Olsen
Lepaskan: 2025-01-16 20:03:11
asal
864 orang telah melayarinya

Laravel Eloquent ORM in Bangla Part-Query Scopes)

Ciri Skop Pertanyaan Laravel Eloquent membolehkan pertanyaan rekursif disimpan dalam kaedah untuk menjadikan kod boleh digunakan semula. Ini memastikan kod itu bagus dan mudah difahami, terutamanya apabila jenis pertanyaan yang sama diperlukan berulang kali. Skop Pertanyaan mentakrifkan pertanyaan biasa sebagai kaedah, yang kemudiannya boleh digunakan di seluruh model.

1. Skop Global

Penjelasan:

Skop Global sentiasa dilampirkan pada model. Skop ini berfungsi secara automatik apabila anda menggunakan model, anda tidak perlu menulisnya setiap kali. Ia biasanya digunakan untuk menyemak status log masuk, rekod aktif dsb.

Mencipta skop global:

1. Buat kelas skop global:

Untuk mencipta Skop Global dalam Laravel, kelas yang melaksanakan antara muka Scope digunakan.

<code class="language-php">use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

class ActiveScope implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        $builder->where('active', 1);  // সক্রিয়  ফিল্টার
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

2. Lampirkan skop global pada model:

Ini harus ditambahkan pada booted() kaedah model anda.

<code class="language-php">use App\Models\Post;
use App\Scopes\ActiveScope;

class Post extends Model
{
    protected static function booted()
    {
        static::addGlobalScope(new ActiveScope);
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kini menggunakan Post::all() akan menggunakan penapis active = 1 secara automatik.

3. Mengabaikan skop global buat sementara waktu:

<code class="language-php">use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

class ActiveScope implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        $builder->where('active', 1);  // সক্রিয়  ফিল্টার
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini akan menggugurkan skop global buat sementara waktu dan mengembalikan semua siaran, kecuali penapis active.

2. Skop Tempatan

Penjelasan:

Skop Tempatan bertindak sebagai skop pertanyaan khusus dalam model dan hanya digunakan apabila anda memanggilnya secara eksplisit. Ia tidak digunakan secara automatik semasa setiap pertanyaan seperti skop global.

Mencipta skop setempat:

Buat skop setempat dengan menambahkan kaedah awam pada model, yang hujah pertamanya Builder ialah input.

<code class="language-php">use App\Models\Post;
use App\Scopes\ActiveScope;

class Post extends Model
{
    protected static function booted()
    {
        static::addGlobalScope(new ActiveScope);
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menggunakan skop setempat:

<code class="language-php">$posts = Post::withoutGlobalScope(ActiveScope::class)->get();</code>
Salin selepas log masuk

Menambah parameter pada skop setempat:

Parameter boleh dihantar ke skop setempat.

<code class="language-php">use App\Models\Post;

class Post extends Model
{
    // লোকাল  স্কোপ
    public function scopeActive($query)
    {
        return $query->where('active', 1);
    }

    public function scopeDraft($query)
    {
        return $query->where('status', 'draft');
    }
}</code>
Salin selepas log masuk

Skop kini boleh digunakan dengan parameter status:

<code class="language-php">// সক্রিয়  পোস্ট  পেতে:
$posts = Post::active()->get();

// ড্রাফট  পোস্ট  পেতে:
$draftPosts = Post::draft()->get();

// চেইন  করে  ব্যবহার:
$activeDraftPosts = Post::active()->draft()->get();</code>
Salin selepas log masuk

'diterbitkan' ialah parameternya.

3. Skop Dinamik

Skop Dinamik ialah sejenis skop tempatan, di mana nama skop boleh dipanggil secara dinamik. Laravel membenarkan penggunaan scopeName() nama jenis.

<code class="language-php">class Post extends Model
{
    // লোকাল  স্কোপ
    public function scopeStatus($query, $status)
    {
        return $query->where('status', $status);
    }
}</code>
Salin selepas log masuk

skop kini boleh dipanggil secara dinamik:

<code class="language-php">$posts = Post::status('published')->get();</code>
Salin selepas log masuk

Ini berfungsi sama seperti kaedah scopePublished().

4. Pelbagai Skop

Berbilang skop boleh dirantai. Contohnya, skop status dan active boleh digunakan bersama:

<code class="language-php">use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;

class ActiveScope implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        $builder->where('active', 1);  // সক্রিয়  ফিল্টার
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini akan digunakan kedua-dua active dan status('published').

5. Skop boleh rantai

Eloquent Skop Tempatan boleh dirantai, bermakna berbilang skop boleh digunakan serentak.

<code class="language-php">use App\Models\Post;
use App\Scopes\ActiveScope;

class Post extends Model
{
    protected static function booted()
    {
        static::addGlobalScope(new ActiveScope);
    }
}</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Terdapat tiga skop dan satu orderBy dirantai.

Atas ialah kandungan terperinci ORM Fasih Laravel dalam Skop Separa Pertanyaan Bangla). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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