我使用的是Laravel 9和PHP8.0.当我try 更新用户时,我得到以下异常:

SQLSTATE[22007]:[微软][SQL Server的ODBC驱动程序18][SQL 服务器]转换日期和/或时间时失败 字符串.

我认为正在执行的查询是Laravel内部的:

SELECT
  count(*) AS aggregate
FROM
  [ users ]
WHERE
  [ email ] = user_email
  AND [ id ] <> user_id
  AND [ deleted_at ] = NULL

USER_EMAIL和USER_ID是正在更新的用户的邮箱和ID.

我知道这里的问题是因为查询的SQL Server语法不正确,它应该是"[DELETED_AT]IS NULL"而不是"=NULL",但我不知道如何修复它.

QueryException Stack Error

推荐答案

谢谢大家.多亏了Laracast forum岁的斯内皮,我才得以解决这个问题.执行查询是因为执行了Laravel验证,但是这样编写验证会生成错误的查询.

'email' => 'required|email|string|max:255|unique:users,email,'.$this->id.',id,deleted_at,null',

将其更改为此选项可解决问题:

'email' => [
    'required',
    'email',
    'string',
    'max:255',
    Rule::unique('users')
            ->ignore($this->id)
            ->where(fn (Builder $query) => $query->whereNull('deleted_at' ))],

我不确定这是否是Laravel的问题,或者它是否打算像这样工作,但我认为简化的方法应该也能起作用,并生成正确的查询.

Php相关问答推荐

将一个数字分配到一系列因素中(就像贪婪算法)

PHP cUrl扩展与v8.2.12更新损坏

在Woocommerce变量产品中的标签附近显示所选属性选项名称

照明\Support\Collection::Filter():参数#1($Callback)的类型必须为?可调用、已给定数组、已调用

WooCommerce:在 checkout 审核单和发票中显示定制产品数据

在WooCommerce中禁用客户用户角色的纳税计算

将购买限制在WooCommerce中具有相同产品属性的项目

在Laravel中修改JSON输出

如何使用MS Graph PHP SDK V2下载文件

如何在execute语句中使用存储过程参数?

WooCommerce中基于用户角色的不同产品差价

限制某些产品只能在WooCommerce的特定邮政编码/邮政编码范围内发货

基于服务器的不同地平线配置

升级到PHP 8.2后无法删除cURL Cookie文件

文件::Files()响应返回空对象数组

对产品/库存结果集进行分组和计数,形成多维分层数组

如何在 Phpunit 的静态提供程序中创建测试双打?

PHP简单地将物品装在盒子里会导致未使用的空间,但还有剩余容量

MySQLI bind_param导致的Cannot modify readonly property错误

WordPress 函数 get_post(post_id) 是否查询数据库?