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);
 }