Laravel 5.8自定义时间戳列名称无法按记录工作

时间:2019-05-23 20:34:14

标签: laravel eloquent lumen

没关系,我是个笨蛋。我有该模型的两个副本。我已经修改了其中一个模型以包含CREATED_AT / UPDATED_AT常量,但是在我的控制器中,我正在调用另一个模型。我感谢人们花时间回复此问题。如果其他人遇到相同的问题,将保留该问题。

根据Laravel 5.8 documentation,可以自定义用于在表中存储时间戳的列的名称:

  

如果您需要自定义用于存储时间戳的列的名称,则可以在模型中设置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 :(得分:0)

使用时间戳字段名称修改模型后,请确保数据库中具有这些字段名称。在您的情况下,表ExternalUsers应该同时具有两个时间戳字段:createdAtupdatedAt,而不是Laravel的默认字段:created_atupdated_at