【问题标题】:Laravel sqlsrv - unable to create timestamps()Laravel sqlsrv - 无法创建时间戳()
【发布时间】:2016-05-29 04:46:49
【问题描述】:

我正在将 L5.1.x 中的现有项目迁移到运行 Server 2012 和 SQL Server 2012 的新服务器。

在为表使用 timestamps() 字段时遇到了一些问题。生病时添加我的方案:

$table->timestamps();

我将获得类型为“datetime”的 created_at 和 updated_at 列。

但是在尝试将模型添加到此数据库时,使用新配置时,我总是会收到该错误:

QueryException: Unable to convert an nvarchar Value to and datetime Value ....

当我禁用模型中的时间戳字段时,一切正常:

public $timestamps = false;

.. 当然 created_at 和 updated_at 没有值

我不知道是什么导致了这个问题 - 有什么想法吗?我可以手动将 created_at 和 updated_at 字段设置为“GETDATE()”——但我想使用 Laravel 的基本功能。

【问题讨论】:

  • 在您的连接设置中,您将驱动程序设置为sqlsrv,并且您的默认连接设置正确吗?
  • 当然,他们已经发现了问题(10 小时后);)

标签: laravel


【解决方案1】:

好的,我发现了问题 - Laravel 创建了一个日期时间,格式为:

"Y-m-d H:i:s.u"

但 SQL Server 需要以下格式:

"Y-d-m H:i:s"

所以当你更新你的模型函数时:

public function fromDateTime($value)
{
    return Carbon::parse(parent::fromDateTime($value))->format('Y-d-m H:i:s');
}

您可以将日期格式转换为您的 SQL Server 的正确值(不知道为什么它的 Y-d-m,它不是我的服务器;))

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2017-09-28
    • 1970-01-01
    • 2022-07-02
    • 2021-04-13
    相关资源
    最近更新 更多