laravel - 从数据库中删除 updated_at 和 created_at 列后,laravel 尝试插入它们

Posted

技术标签:

【中文标题】laravel - 从数据库中删除 updated_at 和 created_at 列后,laravel 尝试插入它们【英文标题】:laravel - after removing updated_at and created_at columns from database laravel tries to insert into them 【发布时间】:2018-04-24 17:29:43 【问题描述】:

我已经从数据库中删除了 created_at 和 updated_at,但是 laravel 尝试插入这些列,但是我已经从数据库和控制器中的代码中删除了。我认为有些东西被缓存了。顺便说一句,我不想​​在模型中使用 public $timestamps = false,因为它们似乎是多余的和不需要的。

【问题讨论】:

您是否将它们从迁移中删除? 是的!从数据库、迁移、控制器中删除! 【参考方案1】:

好吧,其实你需要设置:

public $timestamps = false;

而且它不是额外的和不需要的,因为默认情况下它假定模型具有时间戳(实际上将它们保留在几乎所有表中是非常合理的)。

时间戳用于保存记录:

if ($this->usesTimestamps()) 
    $this->updateTimestamps();

因此,当您在表中没有这些列时,使用 Eloquent 将此属性设置为 false 时,没有其他更短的方法。

【讨论】:

所以你的意思是每个表都需要这两列并且它们是必需的??我不知道!因为我有几张桌子没有这两个并且工作正常! 如果你使用 Eloquent 保存所有表,默认情况下应该有时间戳,除了数据透视表。但是,如果您正在使用例如查询生成器,则不需要它们。 我不知道什么是数据透视表。我所知道的是我用过 Eloquent,他们都不需要它! 那么,如果您知道 Eloquent 不需要它们,为什么还要问 SO?正如我所说,默认情况下,如果您不将时间戳设置为 false,Eloquent 将始终尝试设置 created_at 和 updated_at 列

以上是关于laravel - 从数据库中删除 updated_at 和 created_at 列后,laravel 尝试插入它们的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 利用 observer 类基于状态属性,对进行删除和修改的控制

Laravel 数据库更新,删除操作

如果从数据库中删除,Laravel 中的排队作业是不是会停止?

如何从 Laravel 项目中删除所有迁移但保留表和字段

Laravel Dusk 测试运行后从数据库中删除模型?

Laravel Eloquent API 资源:从响应(集合)中删除“数据”键