Dans mon application Laravel 4, ma table users
a une colonne votes
. J'aimerais trouver le classement de l'utilisateur actuel. Je peux déjà obtenir le top 10 des utilisateurs avec User::orderBy('votes', 'desc')->take(10)
, mais je voudrais afficher le rang de l'utilisateur actuel en dessous de cette liste. Idéalement, ce serait quelque chose comme:Obtenir le rang de la rangée actuelle avec Laravel
Auth::user()->rank('orderBy', 'votes', 'desc');
je suis l'utilisateur connecté, je demande son rang en supposant que je regarde la table des utilisateurs par votes.
Est-ce que quelqu'un sait s'il y a un moyen de le faire avec Eloquent?
Élégant. Solution hacky similaire cependant. Je vais soumettre une demande de fonctionnalité, il doit être préférable d'utiliser la capacité native de la base de données. – BenjaminRH
En fait, '$ this' ne semble pas pouvoir accéder aux champs du modèle dans les méthodes de portée, alors qu'une méthode normale le permet. – BenjaminRH
Ça marche pour moi. Vous devez le faire via le 'Auth :: user()' de sorte que vous appelez 'rank' sur cet objet utilisateur. Je viens de le tester et il semble qu'il ne retourne pas le nombre. J'ai mis à jour ma réponse pour plutôt être utilisé via un getter. J'ai testé et peux confirmer que cela fonctionne. –