我正在使用推进器对Symfony 1.4上的网站进行重新编码,从一小时开始,我正在搜索如何使用Propel进行此操作? (关于Symfony 1.4的Propel 1.4)
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 :(得分:0)
您的Propel版本已过时。我强烈建议您将Propel升级到至少1.5,发布时间超过6 years ago。
使用v1.5 +,您将使用新的Query类,如下所示:
$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了解使用条件。