2

使用流明 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 条 ID 为 1 到 3 的记录,今天该路线返回 ID 2。

问题:什么会导致以前版本的 Lumen 接受最后一行代码并且在最新版本的 Lumen 中断时正常工作?我想提到的唯一另一件事是,我以前在 PHP 5.6 上做本教程,但现在我在 PHP 7 上。

附加数据:当我使用 1 而不是 0 时,这是 var_dump($quotes) 的结果...

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) "*" } } } 
4

0 回答 0