📌  相关文章
📜  未找到列:1054 未知列 'updated_at' - PHP (1)

📅  最后修改于: 2023-12-03 14:55:25.563000             🧑  作者: Mango

未找到列:1054 未知列 'updated_at' - PHP

这个错误通常发生在使用 Laravel (或其他基于 Eloquent ORM 的框架)构建 Web 应用程序时。它表示数据库表中没有名为 updated_at 的列,但在模型中却尝试使用它。

以下是一些可能出现此错误的场景和解决方案。

场景 1:缺少迁移文件

在 Laravel 应用程序中,每个数据库表都应该对应一个迁移文件,用于创建和修改表结构。如果你尝试在 Eloquent 模型中使用 updated_at 列,但没有相应的迁移文件去创建这个列,就会导致此错误。

解决方法:创建一个迁移文件,添加 updated_at 列到数据库表中,然后运行迁移。

Schema::table('your_table_name', function (Blueprint $table) {
    $table->timestamp('updated_at')->nullable();
});
场景 2:对错误表进行更新操作

如果你使用了错误的表名,在影响的表中没有 updated_at 列,就会出现此错误。

解决方法:检查你的 Eloquent 模型和查询语句中使用的表名是否正确,确保你正在更新正确的表。

场景 3:禁用了时间戳

默认情况下,Eloquent 模型会自动维护 created_atupdated_at 两个时间戳列。如果你在 Eloquent 模型中禁用了时间戳,就会导致此错误。

解决方法:启用时间戳列,或者在查询语句中手动指定更新时间戳字段。

// 在 Eloquent 模型中启用时间戳列
public $timestamps = true;

// 在查询语句中手动指定更新时间戳字段
YourModel::where('id', $id)->update([
    'other_column' => $value,
    'updated_at' => now(), // 手动更新时间戳
]);

总之,未找到列:1054 未知列 'updated_at' - PHP 错误通常是由于数据库表结构和 Eloquent 模型不一致导致的。需要检查数据库表和 Eloquent 模型之间的字段映射关系,确保它们匹配正确。