Как использовать оператор OR в запросе Propel с использованием Symfony - PullRequest
2 голосов
/ 16 августа 2011

Прямо сейчас приведенный ниже код ищет author_id и target_object_id в базе данных и требует, чтобы оба соответствовали, чтобы быть полученными запросом. Мне бы хотелось, чтобы оно было WHERE author_id='x' || target_object_id='y' вместо того, чтобы быть && по умолчанию, что и делает код ниже.

Я посмотрел руководства Propel и Symfony, и они мне не помогают.

$c = new Criteria();
$c->add("type", GVCCommentPeer::TYPE_PRIVATE_MESSAGE);
$c->add("author_id", $this->myprofileid);
$c->add("target_object_id", $this->profile->getId());

1 Ответ

0 голосов
/ 17 августа 2011

Вам необходимо создать объекты Criterion из вашего объекта Criteria и объединить их при условии, что вам необходимо:

//create your Criteria
$c = new Criteria();
$c->add("type", GVCCommentPeer::TYPE_PRIVATE_MESSAGE);

//create 2 Criterion objects
$c1 = $c->getNewCriterion("author_id", $this->myprofileid);
$c2 = $c->getNewCriterion("target_object_id", $this->profile->getId());

// merge the two fields on OR
$c1->addOr($c2);

//bind
$c->add($c1);

$result = YOURPEERHEREPeer::doSelect($c);
...