Eloquent & Datenzugriff v1

Introduction

Laravel Global Or Scope · A Laravel package to add possibility to use global scopes with an or operation in Eloquent Models.

Version und Seitenübersicht
Commit dbbb1e2f51a6 Diese Seite auf GitHub

This package allows you to add global scopes to models combined with an or condition. It contains additional functionality to disable some or all or-scopes on the fly.

Just add the trait to your eloquent model and then you can use the addGlobalOrScopes method when booting.

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
use Lacodix\LaravelGlobalOrScope\Traits\GlobalOrScope;

class Post extends Model
{
    use GlobalOrScope;

    public static function booting(): void
    {
        static::addGlobalOrScopes([Scope1::class, Scope2::class]);
    }
}

class Scope1 implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        return $builder->whereNull('col1')->where('col2', 1);
    }
}

class Scope2 implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        return $builder->where('col3', 2);
    }
}
...
Post::query()->where('user_id', 1000)->get();

This results in running the following SQL Query

select * from "posts" where "user_id" = 1000 and (("col1" is null and "col2" = 1) or ("col3" = 2))

For temporary disabling you can use

Post::query()->withoutGlobalOrScopes()->where('user_id', 1000)->get();

what results in a simple

select * from "posts" where "user_id" = 1000

Technisches Erstgespräch

Aus einem Package wird noch kein belastbares Produkt.

Wenn Architektur, Integration oder langfristiger Betrieb entscheidend sind, sprechen wir gern über den vollständigen Anwendungskontext.

Projekt besprechen