1

Я пишу Doctrine 2.3 Query и я столкнулся некоторые вопросы:Учение Datetime и где условие

SQL-запрос, который я отражающими был:

SELECT * 
FROM `entry` 
WHERE `plate` LIKE '%' 
AND `recognition_datetime` BETWEEN '2013-03-13 22:20:18' 
AND '2013-03-13 22:20:20'; 

Я получаю из положить с выбранные строки.

Учение, которое я пытаюсь:

Opt 1:

$qry = $this->manager()->createQueryBuilder() 
        ->from($this->entity, 'e') 
        ->select('e'); 
$qry->where('e.plate like :plate'); 
$qry->setParameter('plate', $plate); 
$qry->add('where', "e.datetime between '2013-03-13 22:20:18' and '2013-03-13 22:20:20'"); 
$qry->setMaxResults($limit); 

Это из путы только первый, где условие:

SELECT e FROM Myproject\Domain\result e WHERE e.plate like '%' 

Opt 2:

$qry = $this->manager()->createQueryBuilder() 
        ->from($this->entity, 'e') 
        ->select('e'); 
$qry->where('e.plate like :plate'); 
$qry->setParameter('plate', $plate); 
$qry->andWhere('e.datetime BETWEEN :monday AND :sunday') 
    ->setParameter('monday', $fromdate->format('Y-m-d H:i:s')) 
    ->setParameter('sunday', $todate->format('Y-m-d H:i:s')); 

Он печатает только t он второй, где в качестве запроса. Может ли кто-нибудь помочь мне написать несколько где/И/или условие?

ответ

4

После некоторых исследований я обнаружил несколько вещь, которая решила свои проблемы:

запросов Генерация:

//CREATING QUERY BUILDER 
$qry = $this->manager()->createQueryBuilder() 
     ->from('YOUR_ENTITY_HERE', 'e') 
     ->select('e'); 

//LIKE 
$ex1 = $qry->expr()->like('e.user', "'".$user."'"); 

//BETWEEN 
$ex2 = $qry->expr()->between('e.datetime',"'".$datetime."'","'".$dateto."'"); 

//IN 
$ex3 = $qry->expr()->in('e.country', $country); 


//ADDING ALL EXPRESSION TO ONE INBETWEEN EXPRESSION "AND" OPERATION 
$Query = $qry->expr()->andX($ex1,$ex2,$ex3); 

//ADDING ALL EXPRESSION TO ONE INBETWEEN EXPRESSION "OR" OPERATION 
$Query = $qry->expr()->orX($ex1,$ex2,$ex3); 

//ADDING TOTAL EXPRESSIONS TO WHERE 
$qry->where($Query); 

//GENERATE QUERY 
$qry->getQuery(); 

//FINAL OPERATIONS 
//EXECUTE 
$qry->execute(); 

//GET ARRAY OUT PUT 
$qry->getArrayResult(); 

//GET DB OBJECT 
$qry->getResult(); 

Другие способы обеспечения в операциях:

ДРУГОЙ ПУТЬ ДЛЯ ИСПОЛЬЗОВАНИЯ В РАБОТЕ :

$country=array('Us','UK','IND','BE'); 

$exp = $this->manager()->getExpressionBuilder(); 
$qry = $this->manager()->createQueryBuilder() 
     ->select('e') 
     ->from('YOUR_ENTITY_HERE', 'e') 
     ->add('where', $exp->in('e.country', $country)); 

 Смежные вопросы

  • Нет связанных вопросов^_^