Condition de selection résultat d'un calcul entre 2 column

Par Fairouz Boussadia, il y a 7 ans


Bonjour,

Voila j'aimerai savoir comment faire pour conditionner un sélect avec le résultat de la différence entre 2 column
exemple

Campagne::find($campagne_id)->competences() ->where(DB::raw("competences.lft - competences.rgt"), '=', 1) ->addSelect(DB::raw("COUNT(competences.id) as total"))->first();

j'ai une erreur
Column not found: 1054 Champ 'competences.lft - competences.rgt' inconnu dans where clause

Merciiii

2 réponses

skaro42, il y a 7 ans

Bonjour,
La fonction "Where" peut prendre une closure comme paramètre, exemple (https://laravel.com/docs/5.8/queries#where-clauses) :

DB::table("users")->where('id', function($query) { $query->select('id')->where('name', 'John Doe')->from('users'); })->get();

Tu peux aussi utiliser les fonctions "SelectRaw()" et "WhereRaw()".

Ta requête commence par "Campagne::find($campagne_id)->competences()", dès que tu as fait appel à ta relation "competences", normalement tu n'es plus dans une requête mais dans une collection et les fonctions "DB::raw()" et "addSelect()" ne font pas parties des collections (https://laravel.com/docs/5.8/collections).

En espérant que ceci puisse t'aider.

bestastrologysolution, il y a 7 ans

I just want to thank to share your information and your website