【问题标题】:How to check Null values in mysql如何在mysql中检查Null值
【发布时间】: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,我已经更新了问题

标签: php mysql laravel


【解决方案1】:

尝试这个。

大批 ( 'query' => 'select * from employees where date_of_leaving is Null and employees.deleted_at is null', '绑定' => 大批 ( 0 => '2022-09-23 00:00:00', ), '时间' => 2.36, ),

【讨论】:

  • 我正在使用this package,所以我无法控制查询格式
猜你喜欢
  • 2010-09-27
  • 2011-08-25
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
相关资源
最近更新 更多