Comment puis-je afficher l'enregistrement unique le plus récent de Laravel à l'aide de Eloquant la solution que j'ai affichée ci-dessous indique que l'enregistrement le plus ancien de la base de données n'est pas le plus récent.
J'ai deux tables une table de paiements et une table de paiements. La table de paiements a les colonnes suivantes p>
La table des paiements a une relation nombreuses à une avec la table des locataires. p>
dans ma page d'index Je souhaite afficher uniquement le dernier paiement par locataire (tenant_id) p>
Dans mon contrôleur, j'ai p> Ce spectacle Le dernier enregistrement n'est pas le dernier. Comment puis-je afficher le dernier enregistrement de paiement pour chaque locataire - un seul enregistrement de paiement le plus récent par tenant_id p> p>
3 Réponses :
Vous pouvez faire une nouvelle relation intitulée «Dès-dépassement» en utilisant «Hasone» avec OrderbyDesc pour obtenir le dernier paiement ...
Dernier () code> est une fonction qui commandera avec la colonne que vous fournissez en ordre décroissant.
public function index()
{
$payments = Payment::groupBy('tenant_id')->get()->latest('id');
return view('payments.index')->with('payments',$payments);
}
Cela donne une erreur. "Utilisation d'un identifiant constant non défini - supposé" ID "(cela lancera une erreur dans une version future de PHP)"
Enveloppez-le dans des citations Dernière ('ID') CODE> ou si vous avez une colonne TIMESTAMP à la fin de votre table, vous pouvez le laisser à
Dernier () code> au lieu de
Dernier (id) code> et il commandera par cette colonne par défaut.
Cela donne toujours une erreur "Méthode Illuminate \ Base de données \ Eloquent \ Collection :: Dernière n'existe pas." Qu'est-ce qui pourrait être la raison
Supprimer -> get () code> et cela devrait fonctionner. $ Paiements = Paiement :: Groupby ('Tenant_id') -> Dernière ('ID');
Ce qui suit me donne la sortie dont j'avais besoin. Existe-t-il un moyen plus éloquent d'exprimer cette fonction.
{ $payments = Payment::whereRaw('id IN (select MAX(id) FROM payments GROUP BY tenant_id)')->get(); return view('payments.index')->with('payments',$payments);}