2016-09-27 8 views
0

Я перекодирую веб-сайт на Symfony 1.4 с движением и с часа и более Я ищу, как я могу это сделать с помощью Propel? (Propel 1.4 на Symfony 1.4)symfony 1.4 propel объединяет два AND в области с OR, где статья

SELECT * FROM 'test' WHERE (var_1 = 1 AND var_2 = 2) OR (var_1 = 2 AND var_2 = 1) 

Я пытаюсь с этим кодом

$c = new Criteria(); 
$c->add(MessagesPeer::USER_FROM, $user->getId(), Criteria::EQUAL); 
$c->addAnd(MessagesPeer::USER_TO, $this->user_id, Criteria::EQUAL); 
$c->addOr(MessagesPeer::USER_FROM, $this->user_id, Criteria::EQUAL); 
$c->add(MessagesPeer::USER_TO, $user->getId(), Criteria::EQUAL); 

но результаты это:

WHERE (messages.USER_FROM=16405 OR messages.USER_FROM=56) AND messages.USER_TO=16405 

Любые предложения?

ответ

0

Ваша версия Propel устарела. Я настоятельно рекомендую вам обновить Propel до 1,5, что было выпущено более чем 6 years ago.

Использование v1.5 +, можно использовать новый класс запросов, например:

$messages = MessagesQuery::create() 
    ->condition('cond1', 'Messages.UserFrom = ?', $user->getId()) 
    ->condition('cond2', 'Messages.UserTo = ?', $this->user_id) 
    ->combine(['cond1', 'cond2'], 'and', 'cond12') 
    ->condition('cond3', 'Messages.UserFrom = ?', $this->user_id) 
    ->condition('cond4', 'Messages.UserTo = ?', $user->getId()) 
    ->combine(['cond3', 'cond4'], 'and', 'cond34') 
    ->where(['cond12', 'cond34'], 'or') 
    ->find(); 

См Propel Relational API documentation для использования условий.

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

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