* DynamicQuery 에서 first, get, insert, update, delete 처리 시 ProxyManager 에 등록된 Proxy 처리 - DynamicField package 를 Proxy interface 를 이용해서 지원 * VirtualConnectionInterface 의 dynamic() 메서드를 통해 획득한 DynamicQuery 에서 proxy 를 사용할 수 있음 * DynamicQuery 의 setProxy(true)->setProxyOption() 로 proxy 를 지원하도록 설정 할 수 있음
See also: Xpressengine\DynamicField\DatabaseProxy
Author: XE Developers (developers@xpressengine.com)
コード例 #1
0
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     DynamicModel::clearBootedModels();
     $this->app->singleton('xe.db.proxy', function ($app) {
         return ProxyManager::instance($app['xe.register']);
     });
     $this->app->singleton(['xe.db' => DatabaseHandler::class], function ($app) {
         $coupler = DatabaseCoupler::instance($app['db'], TransactionHandler::instance(), $app['xe.db.proxy'], new LaravelCache($app['cache']->driver('schema')));
         $proxyClass = $app['xe.interception']->proxy(DatabaseHandler::class, 'XeDB');
         return new $proxyClass($coupler, $app['config']->get('xe.database'));
     });
 }
コード例 #2
0
 /**
  * test proxy interface
  *
  * @return void
  */
 public function testProxyInterface()
 {
     $register = $this->register;
     $proxyManager = ProxyManager::instance($register);
     $connector = m::mock('Xpressengine\\Database\\VirtualConnectionInterface');
     $proxyInstance = $this->getProxyInstance();
     $proxyInstance->shouldReceive('set');
     $proxyInstance->shouldReceive('insert');
     $proxyInstance->shouldReceive('update');
     $proxyInstance->shouldReceive('delete');
     $register->shouldReceive('get')->andReturn([$proxyInstance]);
     $proxyManager->set($connector, []);
     $proxyManager->insert([]);
     $proxyManager->update([], []);
     $proxyManager->delete([]);
     $query = m::mock('Xpressengine\\Database\\DynamicQuery');
     $proxyInstance->shouldReceive('get')->andReturn($query);
     $proxyInstance->shouldReceive('first')->andReturn($query);
     $proxyInstance->shouldReceive('wheres')->andReturn($query);
     $proxyInstance->shouldReceive('orders')->andReturn($query);
     $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->get($query));
     $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->first($query));
     $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->wheres($query, []));
     $this->assertInstanceOf('Xpressengine\\Database\\DynamicQuery', $proxyManager->orders($query, []));
 }