方法 Illuminate\Database\Eloquent\Collection::oldest 不存在

Method Illuminate\Database\Eloquent\Collection::oldest does not exist

我目前正在使用 Lumen 创建 API。例如,我有 2 tables usersusers_token 以及相应的模型 UserUsersToken.

table users_token 有 2 个重要字段:user_id(与 users table 中的 id 字段链接的外键)和token(一个简单的字符串)。

在我的模型 User 中,我有方法 tokens return 来自用户使用 hasMany() 函数的所有标记:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function tokens()
    {
        return $this->hasMany('App\UsersToken');
    }
}

table users_token 还包含默认字段 created_atupdated_at。因此,为了获得用户最早修改的令牌,我决定使用 Laravel:

oldest() 函数
$latestUserToken = $user->tokens->oldest('updated_at');

但遗憾的是我收到此错误消息:

Method Illuminate\Database\Eloquent\Collection::oldest does not exist.

有人知道我的错误在哪里吗?

因为$user->tokens return Eloquent Collection。

oldest是Eloquent-Builder和Query-Builder的一个方法。

您需要像这样调用 oldest 方法:

$latestUserToken = $user->tokens()->oldest('updated_at')->first();

Laravel 按 updated_at 升序排序。