Метод Illuminate \ Database \ Eloquent \ Collection :: old не существует - PullRequest
0 голосов
/ 05 апреля 2020

В настоящее время я работаю над созданием API с использованием Lumen. У меня есть, к примеру, 2 таблицы users и users_token с соответствующими моделями User и UsersToken.

Таблица users_token имеет 2 поля-импортера: user_id (внешний ключ связаны с полем id из таблицы users и token (простая строка).

В моей модели User у меня есть метод tokens, который возвращает все токены от пользователя используя функцию hasMany():

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

Таблица users_token также содержит поля по умолчанию created_at и updated_at. Поэтому, чтобы получить самый старый модифицированный токен пользователя, я решил использовать функцию oldest() Laravel:

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

Но, к сожалению, я получаю это сообщение об ошибке:

Метод Illuminate \ Database \ Eloquent \ Collection :: old не существует.

У кого-нибудь есть идея, где моя ошибка?

1 Ответ

1 голос
/ 06 апреля 2020

Потому что $user->tokens возвращает Eloquent Collection.

oldest - это метод Eloquent-Builder и Query-Builder.

Вам необходимо вызвать oldest метод, подобный этому:

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

Laravel заказ updated_at как c.

...