You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel软删除场景下MySQL NULL值查询无结果问题排查

问题分析与解决

你的查询拿不到那3条符合date_of_leaving = '2022-09-23 00:00:00'的记录,核心原因是Laravel软删除的默认行为:启用软删除后,框架会自动给所有查询追加deleted_at is null的条件,只返回未被软删除的记录。而你目标的3条记录deleted_at都有具体值(属于已软删除状态),所以被过滤掉了,和NULL被识别成字符串无关。

解决办法

根据需求选择对应方法:

  1. 包含已软删除的记录:如果要同时获取未删除和已软删除的记录,在查询链中添加withTrashed():
$this->repository->pushCriteria(new WhereCriteria('date_of_leaving', $today))->withTrashed();
  1. 只获取已软删除的记录:如果仅需要那3条已软删除的记录,使用onlyTrashed():
$this->repository->pushCriteria(new WhereCriteria('date_of_leaving', $today))->onlyTrashed();

调整后的查询示例

以withTrashed()为例,最终生成的SQL会移除自动追加的deleted_at is null条件:

select * from `employees` where `date_of_leaving` = ?

内容的提问来源于stack exchange,提问作者sai sai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:25:28