public function testAddJoinMultipleWithNotInOperator() { $con = Propel::getConnection(BookPeer::DATABASE_NAME); $c = new Criteria(); $c->addMultipleJoin(array(array(AuthorPeer::ID, BookPeer::AUTHOR_ID), array(BookPeer::ISBN, array(1, 7, 42), Criteria::NOT_IN)), Criteria::LEFT_JOIN); AuthorPeer::doSelectOne($c, $con); $expectedSQL = 'SELECT author.id, author.first_name, author.last_name, author.email, author.age FROM author LEFT JOIN book ON (author.id=book.author_id AND book.isbn NOT IN (1,7,42)) LIMIT 1'; $this->assertEquals($expectedSQL, $con->getLastExecutedQuery()); }
/** * Add the prioritizer specific condition. * @param Criteria $c The criteria to update * @param int $prioritizers_ratio the rate between the max throughput prioritizers to the fair one * @param bool $shouldUseJoin whether we should use join * @return bool whether we use the fair prioritizer */ private static function addPrioritizersCondition(Criteria $c, $prioritizers_ratio, $shouldUseJoin = true) { $rand = rand(0, 100); if ($shouldUseJoin) { $c->addMultipleJoin(array(array(BatchJobLockPeer::PARTNER_ID, PartnerLoadPeer::PARTNER_ID), array(BatchJobLockPeer::JOB_TYPE, PartnerLoadPeer::JOB_TYPE), array(BatchJobLockPeer::JOB_SUB_TYPE, PartnerLoadPeer::JOB_SUB_TYPE), array(BatchJobLockPeer::DC, PartnerLoadPeer::DC)), Criteria::LEFT_JOIN); } else { return false; } if ($rand < $prioritizers_ratio) { // Throughput $c->addAscendingOrderByColumn(BatchJobLockPeer::URGENCY); $c->addAscendingOrderByColumn(BatchJobLockPeer::ESTIMATED_EFFORT); return false; } else { // Fairness $c->addAscendingOrderByColumn(PartnerLoadPeer::WEIGHTED_PARTNER_LOAD); $c->addAscendingOrderByColumn(BatchJobLockPeer::PRIORITY); $c->addAscendingOrderByColumn(BatchJobLockPeer::URGENCY); $c->addAscendingOrderByColumn(BatchJobLockPeer::ESTIMATED_EFFORT); return true; } }
/** * Related events which have a date */ public function getDates(array $options = array()) { $criteria = new Criteria(); $criteria->add(QubitEvent::INFORMATION_OBJECT_ID, $this->id); $criteria->addMultipleJoin(array(array(QubitEvent::ID, QubitEventI18n::ID), array(QubitEvent::SOURCE_CULTURE, QubitEventI18n::CULTURE)), Criteria::LEFT_JOIN); $criteria->add($criteria->getNewCriterion(QubitEvent::END_DATE, null, Criteria::ISNOTNULL)->addOr($criteria->getNewCriterion(QubitEvent::START_DATE, null, Criteria::ISNOTNULL))->addOr($criteria->getNewCriterion(QubitEventI18n::DATE, null, Criteria::ISNOTNULL))); if (isset($options['type_id'])) { $criteria->add(QubitEvent::TYPE_ID, $options['type_id']); } $criteria->addDescendingOrderByColumn(QubitEvent::START_DATE); return QubitEvent::get($criteria); }