Laravel Éloquent récupérer le premier élément et également de maintenir le résultat de la requête intacte?
Veuillez consulter le code suivant:
$msgs = Message::where(function($query) use ($start,$end){
$query->whereBetween('created_at', array($start, $end));
})->orderBy('created_at', 'DESC');
$first = $msgs->first()->created_at;
$ids = $msgs->lists('id');
Ce que j'essaie de faire est d'obtenir la plus récente date de l'ensemble de résultats de requête et d'obtenir toutes les identifiants de la raison en même temps. Mais le code ne fonctionne pas parce que le $msgs a été modifié par l' $msgs->first() fonction. Je me demandais si il existe un moyen de me faire obtenir le premier élément du résultat de la requête sans affecter la totalité des résultats? Grâce
- J'ai essayé: foreach($msgs que $message) { $first = $message; break; } Mais il semble que cela ne rentre pas dans le foreach à tous.
Vous devez vous connecter pour publier un commentaire.
Maintenant votre constructeur a
limit = 1
clause.Donc, fondamentalement, vous avez besoin de ceci:
Votre solution n'est pas la meilleure, qu'il se charge de toutes les lignes et crée des objets d'entre eux, alors que tous vous avez besoin est une liste d'identifiants.
Vous pouvez également utiliser
first()
méthode de la Collecte pour aller chercher son premier élément, au lieu de la boucle foreach:J'ai trouvé une solution:
Étonnamment facile. Mais je ne sais pas si c'est un moyen efficace ou pas.