4 votes

Laravel ajoutant une condition globale sur un eloquent

J'obtiens le invoices dans plusieurs pages à l'aide d'une seule requête.

Code de requête :

$invoices = ImportInvoice::withSupplier() -> withCreatedByAndUpdatedBy() -> orderedName() -> paginate(10);

PROBLÈME :

J'ai ajouté approve dans la base de données qui est boolean la valeur du temps où la facture est approuvée (1) ou ne pas approuver (0) .

Donc maintenant je dois ajouter where('approve', 1) pour obtenir les factures approuvées.

Le problème est que je vais éditer cette éloquence dans plusieurs contrôleurs.

La question est :

Existe-t-il un moyen d'ajouter cette condition de présence dans le modèle ? De plus, je veux parfois renvoyer le Non approuvé les factures.

Il est similaire à Suppression douce créé par Laravel.

Soft delete n'est pas retourné lors de l'appel d'une requête mais si je veux l'appeler, j'appelle simplement withTrashed() fonction.

10voto

Jignesh Joisar Points 2355

Oui, vous pouvez faire comme ça, ouvrir votre ImportInvoice Modèle

premièrement import(add) cette classe

use Illuminate\Database\Eloquent\Builder;

et ajoutez ceci boot méthode

 protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('approve', function (Builder $builder) {
            $builder->where('approve',  1);
        });
    }

obtiennent maintenant par défaut factures approuvées

 ImportInvoice::get()

et que vous voulez voir les factures approuvées et non approuvées, procédez comme suit

ImportInvoice::withoutGlobalScope('approve')->get();

pour plus d'informations, lisez ceci article

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X