如何检查表中是否已存在时间限制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查表中是否已存在时间限制?相关的知识,希望对你有一定的参考价值。

我在mongodb数据库中有很多记录,在学术界就像

 "_id": ObjectId("5a3b41581d78593809000029"),
 "academicyear_id": 67,
  "academicyearname": "2017",
  "startson"▼: "01/01/2017",
  "endson": "12/31/2017",
  "graceperiod": "12/14/2017",
 "status": "active", 

我想调整下面的代码

码:

      class settingsModel
      {
      function testcode()
      {
      $this->collection = $this->db->academicyearTbl;
      $query4 = array('startson'=> $this->startson,'endson' => $this->endson);
      $count4 = $this->collection->find($query4)->count();
      if($count4 > 0)
      {
        //show message
      }
      else
      {
         // allow inserting the new record
      }
      }
      }
      $foo = new settingsModel();
      $foo->academicyearname ="2018"
      $foo->startson="06/02/2017";
      $foo->endson="12/01/2017";
      $foo->testcode();

我是mongodb的新手,我能够获得任何灵感来比较输入的新开始日期和结束日期是否应该落入数据库中已有的时间段。

例如,如果用户将输入新数据,例如

      $foo->academicyearname ="2018"
      $foo->startson="06/02/2017";
      $foo->endson="12/01/2017";

然后不应该允许插入,因为第一个中提到的表中已有数据。

请帮忙 !!!

答案

您应该将两个日期设置为DateTimeImmutable,然后在检查间隔时可以使用$gt$lt运算符作为MongoDate(已过时),如下所示:

class settingsModel
{
    function testcode()
    {
      $this->collection = $this->db->academicyearTbl;

      $query4 = array(
         'startson'=> array( 
            '$gt' => new MongoDate( $this->startson ),
         ),
         'endson' =>  array( 
            '$lt' => new MongoDate( $this->endson ),
         ),
      );

      $count4 = $this->collection->find($query4)->count();
      if($count4 > 0)
      {
        //show message
      }
      else
      {
         // allow inserting the new record
      }
  }
} 

$foo = new settingsModel();
$foo->academicyearname ="2018";
$foo->startson = strtotime("2017-02-06"); //notice the date format
$foo->endson = strtotime("2017-01-12"); //notice the date format
$foo->testcode();

附:你的代码需要很多其他的重构

以上是关于如何检查表中是否已存在时间限制?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查Mysql表中是不是存在记录[重复]

如何在插入 MySQL 之前检查表中是不是存在名称 [重复]

在检查行是不是已存在时,选择不会从表中获取任何内容

如果 URL 已存在于数据库中,如何使用 PHP 检查?

检查是不是已设置 JSP 片段

Postgres查询以查找连接表中是不是已存在组合