setar banco default dinamicamente

23 views
Skip to first unread message

Douglas J.A.M

unread,
Aug 30, 2012, 6:08:45 AM8/30/12
to kohan...@googlegroups.com
Bom dia,

    Gostaria de saber como se vocês sabem como eu implementaria um esquema que, dependendo da minha restrição, seleciona o banco e coloca como default, por exemplo:

if(SESSION::instance()->get('empresa') == 'X'
   setDefaultDB = tal;
else
   setDefaultDB = tal;

Há como no kohana ou vou ter que por um if else em todo canto?

Atenciosamente,

Bernardo - Sudeste Hosting

unread,
Aug 30, 2012, 7:02:23 AM8/30/12
to kohan...@googlegroups.com
Insere no config do modulo database, deve funcionar.

Pode usar também algo como o:
Kohana::$environment === Kohana::PRODUCTION,
Kohana::$environment === Kohana::EMPRESA,



--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/kohana-php/-/QsHhdPFbKacJ.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para kohana-php+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.



--
Atenciosamente,
Bernardo Sepulveda de Castro
------- ------- ------- -------- -------- --------
Rede Sudeste
Aqui você não fica sozinho
www.redesudeste.com.br

Rodrigo Monteiro Ferreira

unread,
Aug 30, 2012, 9:31:03 AM8/30/12
to kohan...@googlegroups.com
Oi Douglas,

Fiz algo parecido, no banco de dados de autenticacao eu tenho uma coluna com o nome do banco que o usuario usa... ai depois sobrescrevi a classe ORM para ler da sessão:

class ORM extends Kohana_ORM {
	
	protected function _initialize()
	{
		// Set the object name and plural name
		$this->_object_name = strtolower(substr(get_class($this), 6));
		$this->_object_plural = Inflector::plural($this->_object_name);
	
		if ( ! $this->_errors_filename)
		{
			$this->_errors_filename = $this->_object_name;
		}
	
		if ( ! is_object($this->_db))
		{
			if($this->_db_group == 'default')
			{
				$this->_db = Database::instance('default', array
						(
								'type'       => 'mysql',
								'connection' => array(
										'hostname'   => Session::instance()->get("config")->host,
										'database'   => Session::instance()->get("config")->database,
										'username'   => Session::instance()->get("config")->user,
										'password'   => Session::instance()->get("config")->password,
										'persistent' => FALSE,
								),
								'table_prefix' => '',
								'charset'      => 'utf8',
								'caching'      => FALSE,
								'profiling'    => TRUE,
						));
			}else{
				$this->_db = Database::instance($this->_db_group);
			}
		}
	
		if (empty($this->_table_name))
		{
			// Table name is the same as the object name
			$this->_table_name = $this->_object_name;
	
			if ($this->_table_names_plural === TRUE)
			{
				// Make the table name plural
				$this->_table_name = Inflector::plural($this->_table_name);
			}
		}
	
		foreach ($this->_belongs_to as $alias => $details)
		{
			$defaults['model'] = $alias;
			$defaults['foreign_key'] = $alias.$this->_foreign_key_suffix;
	
			$this->_belongs_to[$alias] = array_merge($defaults, $details);
		}
	
		foreach ($this->_has_one as $alias => $details)
		{
			$defaults['model'] = $alias;
			$defaults['foreign_key'] = $this->_object_name.$this->_foreign_key_suffix;
	
			$this->_has_one[$alias] = array_merge($defaults, $details);
		}
	
		foreach ($this->_has_many as $alias => $details)
		{
			$defaults['model'] = Inflector::singular($alias);
			$defaults['foreign_key'] = $this->_object_name.$this->_foreign_key_suffix;
			$defaults['through'] = NULL;
			$defaults['far_key'] = Inflector::singular($alias).$this->_foreign_key_suffix;
	
			$this->_has_many[$alias] = array_merge($defaults, $details);
		}
	
		// Load column information
		$this->reload_columns();
	
		// Clear initial model state
		$this->clear();
	}
	
}
Rodrigo Monteiro
Sistemas Web
rodrigom...@gmail.com
(11) 6267-9366

Waldson Patricio

unread,
Aug 30, 2012, 9:44:30 AM8/30/12
to kohan...@googlegroups.com
Onde trabalho usamos variaveis de ambiente para setar qual é o banco default...

Em vez de voce alterar a configuração do grupo 'default' do db, voce pode dizer que outra chave é a default alterando a variável
Database::$default. No localhost nossa chave default é 'development' ou a 'tests'.

2012/8/30 Rodrigo Monteiro Ferreira <rodrigom...@gmail.com>
Reply all
Reply to author
Forward
0 new messages