示例#1
0
 /**
  * Procura todos os objetos por um determinado campo, realizando a juncao das chaves estrangeira
  * configuradas no mapa
  *
  * @param string $field
  * @param mixed $value
  * @param int $order
  * @param int $start
  * @param int $limit
  * @return Ibe_Map
  */
 public function findAllByWithJoin($fields, $values, $order = array(), $start = 0, $limit = 10000)
 {
     //Ibe_Debug::show($this,__FILE__,true);
     $select = Ibe_Database_Query::newSelect($this->table_name)->addWhere($this->getWhere($fields, $values));
     foreach ($this->columns as $col) {
         $select->addField($this->getTableName() . '.' . $col);
     }
     if (isset($this->foreign_key)) {
         foreach ($this->foreign_key as $key => $tbl) {
             $table = Ibe_Map::getTable($tbl);
             $as = str_replace('.', "_", $table->getTableName());
             foreach ($table->getColumns() as $col) {
                 $select->addField($table->getTableName() . '.' . $col . ' AS ' . $as . '_' . $col);
             }
             $on = $key;
             $field_on = $table->getTableName() . '.' . $table->getPrimaryKey();
             $field_on_right = $this->getTableName() . '.' . $on;
             $select->addJoin(Ibe_Database_Query::newJoin($table->getTableName(), $this->getTableName())->addWhere(Ibe_Database_Query::newWhere()->andWhere($field_on, $field_on_right, '=', 'column')));
         }
     }
     /*else {
           throw new Ibe_Exception(Ibe_Exception::MAPA_SEM_FK, array($this->table_name));
       }*/
     return $this->mountObjectsToFinds($select, true);
 }