class DatabaseHandler implements ConnectionResolverInterface

DatabaseHandler

  • Illuminate\Database 를 이용해 데이터 연결
  • 다중 database 연결/Transaction 지원
  • 각 package, plugin 에서 database connection 을 선택적으로 이용 할 수 있도록 지원
  • xe.php 의 database config 설정
    • laravel database config 를 이용해서 Database 연결
  • Illuminate\Database 의 인터페이스 지원
    • 다중 connection, proxy 처리를 위해 추가 인터페이스 지원

app binding

  • xe.db 로 바인딩 되어 있음
  • XeDB facade 제공

interception

  • XeDB

사용법

Database connection

  • 기본 설정으로 되어 있는 database connect
  • database.php 의 default 설정으로 연결
// VirtualConnectionInterface
$connector = XeDB::connection();
  • xe.php 의 database config 'configName' 설정으로 되어 있는 database connect
$connector = XeDB::connection('configName');

Transaction

  • VirtualConnection 통해 TransactionHandler 에서 처리
  • 모든 Connection 에 transaction 처리됨
XeDB::beginTransaction();
XeDB::commit();
XeDB::rollBack();

Query

  • Database 에 query 하기 위해서 VirtualConnectionInterface 의 table(), dynamic() 메소드 사용
  • table(), dynamic() 은 DynamicQuery 반환
  • DynamicQuery 는 Illuminate\Database\Query\Builder 사용
  • dynamic() 은 ProxyManager 를 사용하도록 함 (DynamicField 의 DatabaseProxy 참고)
$connector = app('xe.db');
$query = XeDB::table('user');
$result = XeDB::table('user')->first();

$proxyConfig = [... config for proxy ...];
$query = XeDB::dynamic('tableName', $proxyConfig);

Constants

DEFAULT_CONNECTOR_NAME

Properties

protected DatabaseCoupler $coupler
protected array $config

config/xe.php database 설정


     'database' => [
         'connectorName' => [
             'master' => ['connectionName', 'connectionName', .

Methods

__construct(DatabaseCoupler $coupler, array $config)

create instance

connection(null|string $name = null)

get connector 실제 connection 을 만들지 않고 connector 에서 config 에 따라 master, slave 가 어떤 connection 이름을 사용할지 결정 후 connector 를 반환.

array
getConfig()

get config

makeConnector(string $name)

get connector from DatabaseCoupler

array
config(string $connectorName)

get config

string
getDefaultConnection()

Illuminate\Database\ConnectionResolverInterface

void
setDefaultConnection(string $connectionName)

Illuminate\Database\ConnectionResolverInterface

mixed
__call(string $method, array $parameters)

\Illuminate\Database\DatabaseManager 와 동일한 기능을 제공.

Details

at line 117
__construct(DatabaseCoupler $coupler, array $config)

create instance

Parameters

DatabaseCoupler $coupler database coupler
array $config config/xe.php database 설정

at line 131
VirtualConnectionInterface connection(null|string $name = null)

get connector 실제 connection 을 만들지 않고 connector 에서 config 에 따라 master, slave 가 어떤 connection 이름을 사용할지 결정 후 connector 를 반환.

Parameters

null|string $name config/xe.php database connector name

Return Value

VirtualConnectionInterface

at line 145
array getConfig()

get config

Return Value

array

at line 156
private VirtualConnectionInterface makeConnector(string $name)

get connector from DatabaseCoupler

Parameters

string $name config/xe.php database connector name

Return Value

VirtualConnectionInterface

at line 174
private array config(string $connectorName)

get config

Parameters

string $connectorName config/xe.php database connector name

Return Value

array

at line 184
string getDefaultConnection()

Illuminate\Database\ConnectionResolverInterface

Return Value

string

at line 195
void setDefaultConnection(string $connectionName)

Illuminate\Database\ConnectionResolverInterface

Parameters

string $connectionName connection 이름

Return Value

void

at line 208
mixed __call(string $method, array $parameters)

\Illuminate\Database\DatabaseManager 와 동일한 기능을 제공.

\Xpressengine\Database\VirtualConnection 의 method 실행.

Parameters

string $method method name
array $parameters parameters

Return Value

mixed