2017-04-07 68 views
2

我正在嘗試使用zend表現力,看着如何做數據庫的東西。我在看this,但目前還不清楚。我使用composer來安裝zend-db,它提到在dependencies.global.php中添加一行,然後在工廠類中使用容器來獲取適配器,但之後沒有討論如何在實際操作類中訪問它由於適配器對象超出了其他類的範圍,我不知道發生了什麼。zend expressive - zend db

任何人都有從開始到結束的良好和明確的例子,實際上能夠連接和查詢SQL?

+0

你有沒有得到任何例子來整合Zend/D b最後有表現力嗎?這可能會有所幫助,因爲我也在爲同一主題奮鬥。 – Leo

回答

0

嘗試通過廠注入你的DB類,遵循例如在骨架的應用程序,你可以做這樣的事情:

HomePageFactory.php 

    public function __invoke(ContainerInterface $container) 
{ 
    $router = $container->get(RouterInterface::class); 
    $template = $container->has(TemplateRendererInterface::class) ? $container->get(TemplateRendererInterface::class) : null; 

    $adapter = $container->get(Adapter::class); 
    $usersTable = $container->get(Table\UsersTable::class); 


    return new HomePageAction($router, $template,$adapter,$usersTable); 
} 

HomePageAction.php

class HomePageAction implements ServerMiddlewareInterface 
{ 
/** 
* @var Router\RouterInterface 
*/ 
private $router; 

/** 
* @var null|Template\TemplateRendererInterface 
*/ 
private $template; 

/** 
* @var Adapter 
*/ 
private $dbAdapter; 

/** 
* @var UsersTable 
*/ 
private $usersTable; 

/** 
* HomePageAction constructor. 
* @param Router\RouterInterface $router 
* @param Template\TemplateRendererInterface|null $template 
* @param Adapter $adapter 
* @param UsersTable $usersTable 
*/ 
public function __construct(Router\RouterInterface $router, Template\TemplateRendererInterface $template = null, Adapter $adapter, Table\UsersTable $usersTable) 
{ 
    $this->router  = $router; 
    $this->template = $template; 
    $this->dbAdapter = $adapter; 
    $this->usersTable = $usersTable; 

} 

上,你有你的配置提供商你的桌子必須配置依賴作爲工廠EX:

'factories' => [ 

      Table\UsersTable::class => function($container) { 
       $dbAdapter   = $container->get(AdapterInterface::class); 
       $resultSetPrototype = new ResultSet(); 
       $resultSetPrototype->setArrayObjectPrototype(new Model\Users()); 
       $tableGateway  = new TableGateway('users', $dbAdapter, null, $resultSetPrototype); 
       return new Table\UsersTable($tableGateway); 
      }, 

     ], 
+0

在這個實現中,UserTable.php必須在App/src/models /上創建才能被提供,對嗎? – Leo

+1

你想在哪裏:),但是。 – rafaelphp

+0

您能否請您更新您的答案並給出該UsersTable類和用戶模型的示例?以及如何處理簡單的查詢?我已經失去了我試過多少attemps使框架工作 – Leo