2013-06-04 3 views
6

Я работаю с доктриной 2.3 Мне сложно создать запрос для нижеприведенного сценария.Доктрина многократная, где условие

SELECT * FROM source WHERE source_id ='10' or source_id ='100' or source_id ='30' 

Я сделал это для одного выбора идентификатора, но я не уверен, как это сделать.

$qry = $this->manager()->create() 
     ->select('e') 
     ->from($this->entity, 'e') 
     ->where('e.id = :id'); 

Может ли кто-нибудь помочь мне в этом? Если я получу информацию о работе над вышеуказанным запросом, я решит свои другие проблемы. As Follows.

SELECT * FROM source WHERE source_id ='10' and source_name ='test' and source_val ='30' 

ответ

9

Для первого изменить где положение, как,

->where('e.id IN (:ids)') 
->setParameter('ids', $ids) 

Где $ids = array('10','100','');

И использовать и условие для второго запроса должно быть что-то вроде,

$qry = $this->manager()->create() 
     ->select('e') 
     ->from($this->entity, 'e') 
     ->where('e.source_id = :id') 
     ->andWhere('source_name=?', 'test') 
     ->andWhere('source_val=?', '30') 
+0

Я попробую, и когда я буду работать, я приму ваш ответ. Спасибо за ваш ответ. @Rikesh – TomPHP

+1

вы можете помочь мне в этом http://stackoverflow.com/questions/16917684/doctrine- xml-mapping-two-tables – TomPHP

3
<?php  
$qry = $this->manager()->create() 
    ->select('e') 
    ->from($this->entity, 'e') 
    ->where('e.id = ?', $eid) 
    ->addWhere('source_id = ?', $source_id) 
    ->addWhere('field = ?', $value) 
    ->addWhereIn('id', array(1,2,3)) 
    ->addWhere('id = ? AND name = ?', array($id, $name)); 
?> 

выходных

ВЫБОР е ОТ TblName ГДЕ e.id = $ Ид И source_id = $ source_id И поле = $ значение, и идентификатор (1,2,3) и (ID = $ идентификатор и имя = $ Имя)

+0

Это 'addWhere()' или 'andWhere()'? –

+0

@ToleaBivol Это иWhere(), и, насколько мне известно, не существует функции с именем addWhereIn() из symfony 2.3 - symfony 4. @ ahmed Abumostafa. –

1

Как @Rikesh говорит использовать IN выражение, но здесь это еще один хороший способ конкатенации AND выражения

->where('e.foo = :foo', 'e.bar = :bar') 
->setParameters([ 
    'foo' => $foo, 
    'bar' => $bar, 
]) 

Выходной

... WHERE (e.foo = "foo" AND e.bar = "bar") ...

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