【发布时间】:2022-09-23 22:17:27
【问题描述】:
我正在使用 laravel 框架来开发 Web 应用程序,我正在使用软删除,所以在从数据库中获取数据时我必须检查天气该列是否为空,为此我编写了以下查询
查询生成器
$today= \"2022-09-23 00:00:00\";
$this->repository->pushCriteria(new WhereCriteria(\'date_of_leaving\', $today));
查询日志
array (
\'query\' => \'select * from `employees` where `date_of_leaving` = ? and `employees`.`deleted_at` is null\',
\'bindings\' =>
array (
0 => \'2022-09-23 00:00:00\',
),
\'time\' => 2.36,
),
表结构
+-----------------+-----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------+------+-----+---------+----------------+
| id | bigint unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| email | varchar(255) | NO | | NULL | |
| joining_date | timestamp | NO | | NULL | |
| manager_id | bigint unsigned | NO | MUL | NULL | |
| image_path | varchar(255) | YES | | NULL | |
| date_of_leaving | timestamp | YES | | NULL | |
| still_working | timestamp | YES | | NULL | |
| deleted_at | timestamp | YES | | NULL | |
+-----------------+-----------------+------+-----+---------+----------------+
数据
+---------------------+---------------------+
| date_of_leaving | deleted_at |
+---------------------+---------------------+
| 2022-09-23 00:00:00 | 2022-09-23 11:47:11 |
| 2022-09-23 00:00:00 | 2022-09-23 12:36:46 |
| 2022-09-23 00:00:00 | 2022-09-23 13:09:55 |
| NULL | NULL |
| 2022-09-06 00:00:00 | NULL |
| NULL | NULL |
| NULL | NULL |
| NULL | NULL |
| NULL | 2022-09-23 11:45:01 |
| NULL | NULL |
| NULL | NULL |
+---------------------+---------------------+
实际上在数据库中存在三个符合上述条件的记录,但是这个查询没有获取数据,我怀疑deteled_at正在考虑无效的作为细绳
-
deleted_at 是 laravel 的“软删除”功能的一部分。这不应该是问题。你能在你的表中显示数据吗?如果您可以发布您的“查询生成器”代码(PHP),那就太好了
-
检查您的模型是否具有 SoftDeletes 特征,然后 laravel 将处理其余部分。我不确定您是否使用 eloquent,但如果您仍想检索已删除的记录,可以使用 withTrashed 方法。
-
@Prometheus,我正在使用 softDeletes 特征
-
@RakeshMehta,我已经更新了问题