Доктрина: Как можно включить предложение where только при необходимости в запрос? - PullRequest
0 голосов
/ 07 ноября 2010

Я хочу использовать один запрос для получения:

  • элементы любых категорий (фильтр не применяется);
  • только предметы одной категории (ограничены определенной категорией);

Для этой цели я должен быть в состоянии написать запрос Doctrine, который будет включать предложение where только при выполнении определенного условия (например, часть существующего URL-адреса), в противном случае предложение не будет включено в запрос.

Конечно, я пытался использовать оператор If, но поскольку запрос доктрины связан, выдается ошибка.

Так что я думаю, что решением может быть какой-то (для меня неизвестный) способ написания запросов доктрины в нецепной форме (без каждой строки, начинающейся с "->", а также с каждой строкой запроса, заканчивающейся точкой с запятой "; «)

Таким образом, использование IF было бы возможным, я думаю.

Или, может быть, уже есть какое-то чрезвычайно простое решение этого вопроса?

Спасибо за ваш ответ!

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

Я не знаком с Codeigniter, но ты не можешь написать что-нибудь подобное?

$q = Doctrine_Query::create()
    ->from('items');

if ($cat)
    $q->where('category = ?', $cat);
0 голосов
/ 07 ноября 2010

В вашей модели передайте условие для where в качестве параметра функции. В приведенном ниже примере я принимаю имя функции равным filter_query() и передаю where условие в качестве параметра.

function filter_query($condition=''){

$this->db->select('*');
$this->db->from('TABLE NAME');
   if($condition != ''){
    $this->db->where('condition',$condition);
   }
}

В приведенном выше примере я использовал Класс активной записи Codeigniter .

...