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