Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Alors voilà, en gros j'ai un panel support sur mon site, et on peut associer une catégorie à un utilisateur.
Mais, lorsqu'on est admin, il faut qu'il ait accès à toutes les catégories, avec celles qui lui sont associées en évidence.
Donc ca marche plutôt bien (requête admin) :

$r = \DB::table('support_categories')
                ->leftJoin('support_tickets', 'support_tickets.support_category_id', '=', 'support_categories.id')
                ->select('support_categories.*')
                ->addSelect(\DB::raw('`support_categories`.`id` IN (SELECT `support_category_id` FROM `support_associations` WHERE `user_id` = 2) AS `attributed`'))
                ->addSelect(\DB::raw('COUNT(`support_tickets`.`id`) AS `count`'))
                ->groupBy('support_categories.id')
                ->orderBy('attributed', 'DESC')
                ->orderBy('support_categories.category')
                ->orderBy('support_categories.title')
                ->get();

Qui fait la requête suivante :

SELECT support_categories.*, support_categories.id IN(SELECT support_category_id FROM support_associations WHERE user_id = 2) AS attributed, COUNT(support_tickets.id) AS count FROM support_categories LEFT JOIN support_tickets ON support_tickets.support_category_id = support_categories.id GROUP BY support_categories.id ORDER BY attributed DESC, support_categories.category, support_categories.title;

Ce que je veux

Le problème, c'est que le user_id = 2 doit pouvoir changer. Or je n'ai pas réussi à trouver un moyen de pouvoir le passer via la requête préparée (un "?" ou un ":user_id").
Merci d'avance à tous :)

5 réponses


Ton user_id proviens de Auth() ?

AlexJM
Auteur

Oui

Hello,

Question bête, tu ne peux pas utiliser les méthodes Eloquent avec les relations ? Ce sera probablement plus simple et plus clair à écrire non ?

un Auth::id() a la place du 2 ne fonctionne pas ?

AlexJM
Auteur

Bah ca me semble compliqué :/

Bah je pensais le faire propremenent avec une requête préparée