0
votes

Renvoyer uniquement l'identifiant de maintenance des équipements les plus élevés

Je veux obtenir le plus haut entretence_id pour Equipement pour afficher à un utilisateur. Je peux le faire dans SQL, mais pas dans Eloquent ou QueryBuilder.

Eloquent renvoie toutes les entretenances à ma vue: xxx

SQL renvoyant le plus haut MAINTENCE_ID < / code> pour Equipement : xxx


0 commentaires

4 Réponses :


0
votes

Essayez-le:

Maintence::join( DB::raw(
    '(select max(id) as id,equipament_id as equipament_id  from maintences group by equipament_id order by id desc) sub'
  ), 'sub.equipament_id', '=', 'equipaments.id')
  ->get(['maintences.*']);


1 commentaires

Renvoyer cette erreur: "SQLSTAT [42S22]: Colonne non trouvée: 1054 Colonne inconnue 'Equipaments.id' in 'On Clause' (SQL: SELECT Maintences . * À partir de Maintenance Joindre interne (Sélectionnez max (ID) comme ID, equipent_id comme Equipement_id du groupe de maintenages par equipent_id Commande par ID Desc) Sous sur Sub . Equipement_id = Equipaments . id )



0
votes

avoir le même problème ici . Toujours rechercher problème en utilisant le plus simple terme possible. Ça marche! :)

sur le problème. Pourquoi ID Max et ne PAS DERNIER LA VERSION DE L'EQUIPAMENT, par exemple? Vérifiez ce que vous voulez vraiment parce que l'ID de séquence, par exemple, n'est nécessairement plus mis à jour.


1 commentaires

Merci pour votre aide Rafael. Je vérifierai cela la prochaine fois!



0
votes

Je pense que c'est ce que vous recherchez: xxx

i suppose que vos noms de table sont équipements et maintenances , si Non, veuillez ajuster les noms de table en conséquence dans la requête fournie.


0 commentaires

2
votes

Je ne vous recommande pas d'utiliser la requête interne à l'intérieur de jointure clausule ou de sélectionnez une ... il l'exécutera pour "chacune" lignes. C'est mieux que vous déclarez sur la catégorie modèle une relation qui obtiendra la dernière. Voir le code ci-dessus: xxx

alors vous pouvez utiliser comme ceci: xxx


1 commentaires

Je vais l'essayer! Merci de votre aide.