ホームページ  >  記事  >  バックエンド開発  >  Symfony2のクエリ入力時間の詳細説明

Symfony2のクエリ入力時間の詳細説明

零下一度
零下一度オリジナル
2017-07-02 11:55:511032ブラウズ

この記事では、主に Symfony2 が入力時間をクエリする方法を紹介し、mysql と MongoDB の入力時間を変換およびクエリするための Symfony2 の関連操作スキルを例の形式で分析します。この記事

Symfony2 で入力時間をクエリする方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

一般: フロントエンドが時刻を入力するとき、通常、時刻を timestamp

strtotime - 日付と時刻を記述します。あらゆる英語テキストを Unix タイムスタンプに解析します

例:


$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);

Then: 時間だけの場合、他人が通過した時間が改ざんされるのを防ぐために、時間を次の形式に変更する必要があります。 Y-m-d


$start = date('Y-m-d 00:00:00', $startTimestamp);
$end = date('Y-m-d 23:59:59', $endTimestamp);

1. MySQL での使用


if(empty($startDate)) {
  throw new \Exception('起始时间不为空', BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
if (empty($endDate)) {
  $endDate = $startDate;
}
$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);
if ($startTimestamp > $endTimestamp) {
  throw new \Exception('时间参数错误', BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
if ($status == InventoryOrder::STATUS_SUBMITTED) {
  $index = 'i.submitTime';
} else if ($status == InventoryOrder::STATUS_UNSUBMITTED) {
  $index = 'i.createTime';
} else if (empty($status)) {
  $index = 'i.createTime';
} else {
  throw new \Exception('时间格式不正确', BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
$sql = 'SELECT i FROM AppBundle:InventoryOrder i WHERE ';
$sql .= $index;
$sql .= ' BETWEEN :startDate AND :endDate ';
$start = date('Y-m-d 00:00:00', $startTimestamp);
$end = date('Y-m-d 23:59:59', $endTimestamp);
$params['endDate'] = $end;
$params['startDate'] = $start;
if (!empty($status)) {
  $sql .= ' AND i.status = :status';
  $params['status'] = $status;
}
$sql .=' ORDER By i.createTime DESC';
$query = $this->entityManager->createQuery($sql);
$orderList = $query->setParameters($params)->getResult();

2. mongodb での時間入力とクエリの例

これには、実際には 2 つの落とし穴があります。

えー

ここで、時間クエリがより大きい場合とより小さい場合は、オブジェクトを渡す必要があります。


@ ->field('submit_time')->gt(new \DateTime($start))
->field('submit_time')->lt(new \DateTime($end))

ここで、mongodb は、デフォルトではこれが int 型であることを識別するのに役立ちません。それがどのような型であるかは、手動で渡す必要があります。


りー

以上がSymfony2のクエリ入力時間の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。