Как выбрать последнюю строку в таблице?



Я хочу получить последний файл, вставленный в таблицу.



Я знаю, что первый метод ' существует, и он предоставляет вам первый файл в таблице, но я не знаю, как это сделать, чтобы получить последнюю вставку.

648   9  

9 ответов:

вам нужно будет заказать по тому же полю, которое вы заказываете сейчас, но по убыванию. Например, если у вас есть отметка времени, когда загрузка была выполнена, называется upload_time, вы бы сделали что-то вроде этого;

Для Pre-Laravel 4

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

для Laravel 4 и далее

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

это упорядочит строки в таблице файлов по времени загрузки,нисходящем порядке, и возьмите первый. Это будет последний загруженный файл.

вы никогда не упоминали, используете ли вы Eloquent, Laravel по умолчанию ORM или нет. В случае, если вы, допустим, хотите получить последнюю запись пользовательской таблицы, с помощью created_at, вы, вероятно, могли бы сделать следующее:

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

сначала он заказывает пользователей по полю created_at, спускаясь, а затем берет первую запись результата.

это вернет вам экземпляр объекта User, а не коллекцию. Конечно, чтобы использовать эту альтернативу, вы должны иметь пользовательская модель, расширяющая класс Eloquent. Это может показаться немного запутанным, но это действительно легко начать, и ORM может быть очень полезным.

для получения дополнительной информации, проверить официальная документация который довольно богат и хорошо детализирован.

используйте последнюю область, предоставленную Laravel из коробки.

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

таким образом, вы не извлекаете все записи. Лучше ярлык заказатьпо.

чтобы получить последние данные записи

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

чтобы получить последний id записи

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

Laravel коллекции имеет метод last

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

Это лучший способ, чтобы сделать это.

попробуйте это :

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

если вы ищете фактическую строку, которую вы только что вставили с Laravel 3 и 4 при выполнении save или create действие на новой модели, как:

$user->save();

или

$user = User::create(array('email' => '[email protected]'));

затем вставленный экземпляр модели будет возвращен и может быть использован для дальнейших действий, таких как перенаправление на страницу профиля только что созданного пользователя.

Поиск последней вставленной записи работает на малой громкости система будет работать почти все время, но если вы когда-либо придется вставлять идти в то же время вы можете в конечном итоге запрос, чтобы найти неправильную запись. Это действительно может стать проблемой в транзакционной системе, где несколько таблиц нуждаются в обновлении.

почему-то все вышеперечисленное не работает для меня в laravel 5.3, поэтому я решил свою собственную проблему с помощью:

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

надеюсь, что смогу выручить кого-то.

чтобы получить последние сведения о записи, используйте следующий код:

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

Comments

    Ничего не найдено.