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

ORM Fasih Laravel dalam Skop Separa Pertanyaan Bangla)

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-16 20:03:11920semak imbas

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>

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>

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>

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>

Menggunakan skop setempat:

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

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>

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>

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

skop kini boleh dipanggil secara dinamik:

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

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>

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>

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!

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