Новая версия Lumen вызывает возвращение маршрута Undefined Offset error

Использование Lumen 5.4.5.

Я недавно опробовал устаревшее учебное пособие по Lumen от 2015 года ( http://loige.co/developing-a-web-application-with-lumen-and-mysql/) с последней версией Lumen. По большей части все из этого урока, написанного для предыдущей версии Lumen, продолжает работать, за исключением одного маршрута. Этот маршрут предназначен для возврата другой записи из таблицы базы данных каждый день года. Ранее я уже использовал этот учебник в тот же день и могу подтвердить, что все, по крайней мере, используется для работы по назначению, но какие-то изменения, внесенные в новейшую версию Lumen, по-видимому, по-разному трактуют синтаксис, вызывая ошибку.

Вот маршрут:

    use App\Models\Quote;

/**
 * Display the today quote
 */
$app->get('/', function() use ($app) {

    /*
     * Picks a different quote every day 
     * (for a maximum of 366 quotes)
     *
     *   - $count: the total number of available quotes
     *   - $day: the current day of the year (from 0 to 365)
     *   - $page: the page to look for to retrieve the 
     *            correct record
     */
    $count = Quote::query()->get()->count();
    $day = (int) date('z');
    $page = $day % $count + 1;

    $quotes = Quote::query()->get()->forPage($page, 1)->all();

    if (empty($quotes)) {
        throw new \Illuminate\Database\Eloquent\ModelNotFoundException();
    }

    return view('quote', ['quote' => $quotes[0]]);
});

И вот краткое изложение ошибки:

ErrorException... Undefined offset: 0

at Application->Laravel\Lumen\Concerns\{closure}(8, 'Undefined offset: 0', '/var/www/motivational/routes/web.php', 44, array('app' => object(Application), 'count' => 3, 'day' => 67, 'page' => 2, 'quotes' => array(object(Quote)))) in web.php line 44

В частности, жалуются на последнюю строку в маршруте:

return view('quote', ['quote' => $quotes[0]]);

Кажется, ему не нравится 0, но если я заменю его на 1, он будет работать нормально. В моей таблице котировок есть только 3 записи с идентификаторами с 1 по 3, и сегодня маршрут возвращает идентификатор 2.

Вопрос: Что заставило бы предыдущую версию Lumen принять эту последнюю строку кода и работать без проблем, пока ломается последняя версия Lumen? Единственное, что я хотел бы упомянуть, это то, что я ранее делал это руководство по PHP 5.6, но теперь я на PHP 7.

Дополнительные данные: Вот результат var_dump($quotes), когда я использую 1 вместо 0...

array(1) { [1]=> object(App\Models\Quote)#51 (24) { ["connection":protected]=> NULL ["table":protected]=> NULL ["primaryKey":protected]=> string(2) "id" ["keyType":protected]=> string(3) "int" ["incrementing"]=> bool(true) ["with":protected]=> array(0) { } ["perPage":protected]=> int(15) ["exists"]=> bool(true) ["wasRecentlyCreated"]=> bool(false) ["attributes":protected]=> array(6) { ["id"]=> int(2) ["created_at"]=> string(19) "2017-03-09 09:02:02" ["updated_at"]=> string(19) "2017-03-09 09:02:02" ["text"]=> string(26) "Dream big and dare to fail" ["author"]=> string(14) "Norman Vaughan" ["background"]=> string(5) "2.jpg" } ["original":protected]=> array(6) { ["id"]=> int(2) ["created_at"]=> string(19) "2017-03-09 09:02:02" ["updated_at"]=> string(19) "2017-03-09 09:02:02" ["text"]=> string(26) "Dream big and dare to fail" ["author"]=> string(14) "Norman Vaughan" ["background"]=> string(5) "2.jpg" } ["casts":protected]=> array(0) { } ["dates":protected]=> array(0) { } ["dateFormat":protected]=> NULL ["appends":protected]=> array(0) { } ["events":protected]=> array(0) { } ["observables":protected]=> array(0) { } ["relations":protected]=> array(0) { } ["touches":protected]=> array(0) { } ["timestamps"]=> bool(true) ["hidden":protected]=> array(0) { } ["visible":protected]=> array(0) { } ["fillable":protected]=> array(0) { } ["guarded":protected]=> array(1) { [0]=> string(1) "*" } } } 

0 ответов

Другие вопросы по тегам