Bonjour,

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

J'aimerai traduire ma requete SQL à Eloquent mais je n'y arrive pas...

select commentaires.created_at AS commentaires_created_at, users.*, commentaires.* from `commentaires` inner join `users` on `commentaires`.`id_user` = `users`.`id` inner join `articles` on `commentaires`.`id_article` = `articles`.`id` where numero = $numero AND compteur = (SELECT MAX(compteur) FROM commentaires inner join `articles` on `commentaires`.`id_article` = `articles`.`id` WHERE articles.numero = $numero)

Pour le moment je n'arrive pas à faire mon second condition avec ma seconde requete...

J'ai essayé pas mal de truc mais j'ai toujours une erreur, ou soit la requete disparait...

------------ EDIT 1 ----------------

        return commentaire::join('users', 'commentaires.id_user', '=', 'users.id')->where('id_article', '=', $numero)->find(commentaire::max('compteur'));

Non ça marche pas, ça me fait ça :

select * from `commentaires` inner join `users` on `commentaires`.`id_user` = `users`.`id` where `id_article` = '1' and `commentaires`.`id` = '15' limit 1

Le 15 correspond au nombre du compteur... je me rapproche mais toujours pas...

Si vous avez des idées je suis preneur, merci ;)

----------- EDIT 2 -------------

Je suppose que je suis arriver à une solution, mais je suis vraiment pas sur que ça soit de cette façon qu'il faut faire, je ne sais pas à quoi correspond le firstOrNew...

        return commentaire::join('users', 'commentaires.id_user', '=', 'users.id')->where('id_article', '=', $numero)->firstOrNew(['compteur' => commentaire::max('compteur')]);

Et du coup avant ou dois-je placer mes alias ?

['commentaires.created_at AS commentaires_created_at', 'users.*']

---------- EDIT 3 ----------

Qu'en pensez vous ?

        return commentaire::select(['commentaires.created_at AS commentaires_created_at', 'users.*', 'commentaires.*'])->join('users', 'commentaires.id_user', '=', 'users.id')->where('id_article', '=', $numero)->firstOrNew(['compteur' => commentaire::max('compteur')]);

EDIT 4 :

Ca ne fonctionne pas ^^
Help me please...

Aucune réponse