Maison  >  Article  >  développement back-end  >  Explication détaillée des exemples de requêtes de Symfony2 basées sur le temps de saisie

Explication détaillée des exemples de requêtes de Symfony2 basées sur le temps de saisie

小云云
小云云original
2018-02-10 13:18:521239parcourir

Généralement : lorsque le front-end saisit une heure, nous modifions généralement d'abord l'heure en un horodatage strtotime - analyse la description de la date et de l'heure de tout texte anglais dans un horodatage Unix. Cet article présente principalement. La méthode d'interrogation du temps d'entrée de Symfony2, combinée à des exemples, analyse les techniques de fonctionnement associées de Symfony2 pour convertir et interroger le temps d'entrée de MySQL et MongoDB. Les amis qui en ont besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde. .

Par exemple :


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

Alors : Si c'est juste le temps, afin d'éviter que le temps passé par les autres ne soit faux, il faut pour modifier l'heure sous la forme Y-m-d


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

1 Utilisation dans 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. Exemples de saisie de temps et de requêtes dans mongodb

Il y a en fait deux pièges à cela :


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

Ici, pour les requêtes temporelles, supérieures à et inférieures, un objet doit être passé.


$query->field('status')->equals($status);

Ici, mongodb ne vous aidera pas à l'identifier comme un type int par défaut. De quel type il s'agit, il doit être transmis manuellement.


$data = array();
if (!isset($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);
}
$start = date('Y-m-d 00:00:00', $startTimestamp);
$end = date('Y-m-d 23:59:59', $endTimestamp);
$scanner = Order::FROM_TYPE_SCANNER;
$query = $this->documentManager
  ->createQueryBuilder('AppBundle:Order')
  ->field('submit_time')->gt(new \DateTime($start))
  ->field('submit_time')->lt(new \DateTime($end))
  ->field('from_type')->equals("$scanner");
if (!empty($status) && in_array($status, array(Order::STATUS_CANCELLED, Order::STATUS_SUBMITTED))) {
  $status = $status + 0;
  $query->field('status')->equals($status);
} else if (empty($status)) {
  $status = Order::STATUS_SUBMITTED + 0;
  $query->field('status')->equals($status);
} else {
  throw new \Exception("参数不正确", BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
$orderList = $query->sort('create_time', 'DESC')
  ->getQuery()
  ->execute();

Recommandations associées :

Explication détaillée de l'utilisation du formulaire du framework Symfony2

Explication détaillée des méthodes Symfony2 pour implémenter une requête conjointe

Explication détaillée de l'interrogation en saisissant l'heure dans Symfony2

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn