Yii Framework Forum: Firebird - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Firebird Gii Model Generator Firebird Rate Topic: -----

#1 User is online   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 813
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 09 December 2010 - 05:31 PM

Ó eu denovo! :P

Peguei um sistema para desenvolver que seria basicamente um orçamento online, mais o banco de dados fica na loja física dessa empresa, e o banco de dados é firebird :(

Bom até ae tudo bem, apanhei uns 3 dias para fazer funcionar o firebird local mais consegui hehehe

O unico problema ou digamos que seja quase impossivel, mais tem alguma forma de fazer o Model Generator do Gii, pegar outra conexão do banco dados? Vou usar o 'db' para gerenciar a administração, mais o produtos e pedidos vou fazer direto com outro banco de dados 'fb'.

'db' => array(
            'connectionString' => 'mysql:host=localhost;dbname=sementessertao',
            'emulatePrepare' => true,
            'username' => '****',
            'password' => '****',
        ),
        'fb' => array(
            'connectionString'=>'firebird:dbname=localhost:F:\***\PASTOS.FDB',
            'emulatePrepare' => true,
            'username' => 'SYSDBA',
            'password' => 'masterkey',
        ),


Por padrão o Gii pega a conexão 'db', queria gerar os model do 'fb', eu comento o 'db', e no 'fb' coloco 'db', ai funciona, é possível gerar sem fazer essa invensão toda?
Newerton Vargas de Araújo
0

#2 User is online   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 813
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 09 December 2010 - 05:58 PM

Criei em protected/components/FirebirdActiveRecord.php
<?php

abstract class FirebirdActiveRecord extends CActiveRecord {
    const BELONGS_TO='CBelongsToRelation';
    const HAS_ONE='CHasOneRelation';
    const HAS_MANY='CHasManyRelation';
    const MANY_MANY='CManyManyRelation';
    const STAT='CStatRelation';

    /**
     * @var CDbConnection the default database connection for all active record classes.
     * By default, this is the 'db' application component.
     * @see getDbConnection
     */
    public static $db;
    private static $_models = array();            // class name => model
    private $_md;                               // meta data
    private $_new = false;                        // whether this instance is new or not
    private $_attributes = array();               // attribute name => attribute value
    private $_related = array();                  // attribute name => related objects
    private $_c;                                // query criteria (used by finder only)
    private $_pk;                               // old primary key value

    /**
     * Returns the database connection used by active record.
     * By default, the "db" application component is used as the database connection.
     * You may override this method if you want to use a different database connection.
     * @return CDbConnection the database connection used by active record.
     */

    public function getDbConnection() {
        if (self::$db !== null)
            return self::$db;
        else {

            // Create CDbConnection and set properties
            self::$db = new CDbConnection();
            foreach (Yii::app()->fb as $key => $value)
                self::$db->$key = $value;


            // Uncomment the following lines to prove that you have two database connections
            
              CVarDumper::dump(Yii::app()->db);
              echo '<br />';
              CVarDumper::dump(Yii::app()->fb);
              die;
             
            if (self::$db instanceof CDbConnection) {
                self::$db->setActive(true);
                return self::$db;
            }
            else
                throw new CDbException(Yii::t('yii', 'Active Record requires a "db" CDbConnection application component.'));
        }
    }

}

?>



E no Model fico assim:
class AGENDA extends FirebirdActiveRecord{}


Isso funciona?

Se eu usar AGENDA::model()->findAll(), ele me traz tudo? Se eu precisa ficar usando consulta sql pura?

Por que um site que fiz pra um amigo, eu usei o 'db' e 'db2', mais o dois era mysql, eu chama por SQL fazia a query depois usava Yii::app()->db2->createCommand($sql)->query();

Se o 'AGENDA::model()->findAll()' funcionar, cada dia que passa o Yii se e me supera! hehe
Newerton Vargas de Araújo
0

#3 User is online   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 813
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 09 December 2010 - 06:05 PM

Sobre meu último post: FUNCIONA! hehe

Ralando e aprendendo! hehehe
Newerton Vargas de Araújo
0

#4 User is offline   Rafael Quines 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 18-December 10

Posted 22 December 2010 - 11:52 AM

Boa Newerton.

Mto bom saber que podemos apenas reescrever a classe CActiveRecord para fazer funcionar com qq outros bancos..

abraço
0

#5 User is offline   Edgard Messias 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 19
  • Joined: 05-December 12
  • Location:Brazil

Posted 19 February 2013 - 01:59 PM

Para quem precisar usar o Firebird como banco de dados, podem usar essa extensão: http://www.yiiframew...ion/yiifirebird
1

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users