zend框架3,一个控制器中的多个db表

时间:2017-08-17 10:19:40

标签: php zend-framework zend-framework3

我有一个ZF3项目和一个访问单个postgres表的索引控制器。我有通常的工厂设置

return array(
        'factories' => [
            Model\IsdepotstockTable::class => function($container) {
                $tableGateway = $container->get(Model\IsdepotstockTableGateway::class);
                return new Model\IsdepotstockTable($tableGateway);
            },
            Model\IsdepotstockTableGateway::class => function ($container) {
                $dbAdapter = $container->get(AdapterInterface::class);
                $resultSetPrototype = new ResultSet();
                $resultSetPrototype->setArrayObjectPrototype(new Model\Isdepotstock());
                return new TableGateway('isdepotstock', $dbAdapter, null, $resultSetPrototype);
            },
        ],

我也有我的控制器构造函数:

public function __construct(IsdepotstockTable $table)
{
    $this->isdepotstockTable = $table;
}

我的问题是,如果我想访问第二个表,如何修改构造语句来处理多个表?显然,我必须为我理解的附加表添加工厂。

我查看过ZF3文档,但找不到任何示例。

由于

1 个答案:

答案 0 :(得分:1)

我相信你正在寻找一个控制器工厂函数,它将实例化控制器并将参数传递给构造函数。

__construct()方法中添加第二个表类作为第二个参数,然后在module.config.php中创建工厂。

<?php
use Zend\ServiceManager\Factory\InvokableFactory;

return [
    // ...

    'controllers' => [
        'factories' => [
            Controller\IndexController::class => InvokableFactory::class
            // Put other controllers registration here
        ],
    ],

    // ...
];

这是一本关于ZF3的免费开源书籍,我链接到控制器注册部分供您参考。祝好运! https://olegkrivtsov.github.io/using-zend-framework-3-book/html/en/Model_View_Controller/Controller_Registration.html