Laravel 5.8 имен столбцов пользовательских меток времени не работает, как описано - PullRequest
0 голосов
/ 23 мая 2019

Неважно, я гигантский идиот. У меня было две копии модели. Я изменил одну из моделей, чтобы включить константы CREATED_AT / UPDATED_AT, но в моем контроллере я вызывал другую модель. Я ценю время, которое люди потратили, чтобы ответить на это. Оставит вопрос в случае, если другие столкнутся с той же проблемой.

В соответствии с документацией Laravel 5.8 можно настроить имена столбцов, используемых для хранения отметок времени в таблице:

Если вам нужно настроить имена столбцов, используемых для хранения меток времени, вы можете установить константы CREATED_AT и UPDATED_AT в вашей модели.

Вот пример, который они дают:

class Flight extends Model
{
    const CREATED_AT = 'creation_date';
    const UPDATED_AT = 'last_update';
}

Я пытаюсь заставить это работать в моем приложении (которое является Lumen, если это имеет значение), и это не работает. Вот моя модель:

namespace App;

use Illuminate\Database\Eloquent\Model;

class ExternalUsers extends Model
{
    protected $table = 'ExternalUsers';
    protected $primaryKey = 'username';
    public $incrementing = false;
    protected $keyType = 'string';
    const CREATED_AT = 'createdAt';
    const UPDATED_AT = 'updatedAt';
}

Всякий раз, когда я пытаюсь обновить существующую строку в таблице ExternalUsers, я получаю это сообщение об ошибке в журнале:

PDOException: SQLSTATE [42S22]: столбец не найден: 1054 столбец неизвестен 'ExternalUsers.updated_at' в 'списке полей'

Я что-то не так делаю или документация неверна?

1 Ответ

0 голосов
/ 24 мая 2019

После того, как вы изменили модель с именами полей временных меток, убедитесь, что у вас есть имена этих полей в вашей базе данных.В вашем случае ваша таблица ExternalUsers должна иметь оба поля отметок времени: createdAt и updatedAt вместо полей по умолчанию Laravel: created_at и updated_at

...