Question

Dans mes collections Eloquent, j'aimerais ajouter une colonne supplémentaire appelée "modifiable"."Modifiable" doit être inclus dans chaque requête que j'exécute sur certains modèles.L'affichage "Modifiable" peut être vrai ou faux, en fonction d'une requête brute.

J'ai donc une requête qui doit être exécutée dans chaque requête sur mes modèles.Ajout d'une colonne supplémentaire à ma collection.La valeur de « modifiable » est déterminée par une requête brute.

Quelle est la meilleure façon de procéder?

Était-ce utile?

La solution

Vous pourriez ajouter un addSelect() méthode à votre chaîne de requête pour inclure l’attribut personnalisé.

Quelque chose comme

$results = YourModelClass::select("*")
    ->addSelect(DB::raw("IF(condition,1,0) AS editable"))
    ->get();

Dans le cas ci-dessus, vous remplaceriez condition avec votre instruction SQL pertinente qui serait évaluée par ligne dans le cadre de la requête.Si la déclaration est vraie, alors editable = 1 et si c'est faux alors editable = 0 pour chaque ligne renvoyée dans votre collection.

MODIFIER:Je viens de voir que tu veux ça chaque requête, vous auriez donc probablement besoin d'une portée/d'un trait global pour vos modèles, mais la technique ci-dessus pour inclure l'attribut supplémentaire devrait être la bonne.

Je ne copierai/collerai pas la documentation sur l'ajout de portées globales, elle se trouve dans la documentation principale de Laravel et je suis sûr que vous pouvez la trouver.

Autres conseils

Vous pouvez ajouter un getter personnalisé à votre modèle:

public function getEditableAttribute()
{
    /* return result from your raw query here */;
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top