>  기사  >  백엔드 개발  >  입력 시간 상세 설명을 위한 Symfony2 쿼리 예시

입력 시간 상세 설명을 위한 Symfony2 쿼리 예시

小云云
小云云원래의
2018-02-10 13:18:521268검색

일반적으로 프런트엔드에서 시간을 입력할 때 먼저 시간을 타임스탬프로 수정합니다. strtotime - 모든 영어 텍스트의 날짜 및 시간 설명을 Unix 타임스탬프로 구문 분석합니다. 이 기사에서는 주로 입력 시간을 쿼리하는 Symfony2를 소개합니다. 예제 형식과 결합하여 mysql 및 MongoDB의 입력 시간을 변환하고 쿼리하는 Symfony2의 관련 작업 기술을 분석합니다. 도움이 필요한 모든 사람에게 도움이 되기를 바랍니다.

예:


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

그러면: 그냥 시간이라면 다른 사람이 지나간 시간이 위조되는 것을 방지하기 위해 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의 시간 입력 및 쿼리 예제

여기에는 실제로 두 가지 함정이 있습니다.


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

여기서 시간 쿼리의 경우 초과 및 미만 , 객체를 전달해야 합니다.


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

여기서 mongodb는 기본적으로 이를 int 유형으로 식별하는 데 도움을 주지 않습니다. 어떤 유형인지 수동으로 전달해야 합니다.


$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();

관련 추천 :

Symfony2 프레임워크 형식의 사용법에 대한 자세한 설명

Symfony2에서 조인트 쿼리 구현 방법에 대한 자세한 설명

Symfony2 쿼리 입력 시간에 대한 자세한 설명

위 내용은 입력 시간 상세 설명을 위한 Symfony2 쿼리 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.