Comment sélectionner la dernière ligne du tableau?

Je veux que le dernier fichier soit inséré dans la table.

Je sais que la méthode ‘first’ existe et elle vous fournit le premier fichier de la table mais je ne sais pas comment faire pour obtenir le dernier insert.

Vous devez commander par le même champ que vous commandez maintenant, mais en descendant. Par exemple, si vous avez un horodatage lorsque le téléchargement a été effectué, appelé upload_time , vous ferez quelque chose comme ceci;

Pour Pre-Laravel 4

 return DB::table('files')->order_by('upload_time', 'desc')->first(); 

Pour Laravel 4 et plus

 return DB::table('files')->orderBy('upload_time', 'desc')->first(); 

Cela ordonnera les lignes de la table des fichiers par heure de téléchargement, par ordre décroissant et prendra la première. Ce sera le dernier fichier téléchargé.

Vous n’avez jamais mentionné si vous utilisez Eloquent, l’ORM par défaut de Laravel ou non. Si vous êtes, disons que vous voulez obtenir la dernière entrée d’une table utilisateur, par created_at, vous pourriez probablement faire comme suit:

 User::orderBy('created_at', 'desc')->first(); 

D’abord, il ordonne les utilisateurs par le champ created_at, de manière décroissante, puis prend le premier enregistrement du résultat.

Cela vous renverra une instance de l’object Utilisateur, pas une collection. Bien entendu, pour utiliser cette alternative, vous devez avoir un modèle utilisateur, élargissant la classe Eloquent. Cela peut sembler un peu déroutant, mais il est très facile de commencer et ORM peut être très utile.

Pour plus d’informations, consultez la documentation officielle qui est assez riche et bien détaillée.

Utilisez les dernières fonctionnalités fournies par Laravel.

 Model::latest()->first(); 

De cette façon, vous ne récupérez pas tous les enregistrements. Un raccourci plus agréable pour commanderPar.

Pour obtenir les derniers détails de l’enregistrement

  1. Model ::all()->last(); or 2. Model ::orderBy('id', 'desc')->first(); 

Pour obtenir le dernier identifiant d’enregistrement

 1. Model::all()->last()->id; or 2. Model ::orderBy('id', 'desc')->first()->id; 

Les collections Laravel ont la méthode la plus récente

 Model::all() -> last(); // last element Model::all() -> last() -> pluck('name'); // extract value from name field. 

C’est la meilleure façon de le faire.

Essaye ça :

Model :: latest () -> get ();

Si vous recherchez la ligne que vous venez d’insérer avec Laravel 3 et 4 lorsque vous effectuez une save ou create action sur un nouveau modèle comme:

 $user->save(); 

-ou-

 $user = User::create(array('email' => 'example@gmail.com')); 

L’instance de modèle insérée sera alors renvoyée et pourra être utilisée pour d’autres actions, telles que la redirection vers la page de profil de l’utilisateur que vous venez de créer.

Rechercher le dernier enregistrement inséré fonctionne sur un système à faible volume fonctionnera presque tout le temps, mais si jamais vous devez insérer des fichiers, insérez-les en même temps, vous pouvez finir par interroger pour trouver le mauvais enregistrement. Cela peut vraiment devenir un problème dans un système transactionnel où plusieurs tables doivent être mises à jour.

D’une manière ou d’une autre, tout ce qui précède ne semble pas fonctionner pour moi dans laravel 5.3, alors j’ai résolu mon propre problème en utilisant:

 Model::where('user_id', '=', $user_id)->orderBy('created_at', 'desc')->get(); 

J’espère que je pourrai renflouer quelqu’un.

Pour obtenir les derniers détails de l’enregistrement, utilisez le code ci-dessous:

 Model::where('field', 'value')->get()->last()