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