代码之家  ›  专栏  ›  技术社区  ›  user2101411

TableGateway可以在Zend框架2中使用多个表吗

  •  0
  • user2101411  · 技术社区  · 8 年前

    在我的模块中。php文件中,我想通过Zend框架中的TableGateway类传递多个表名,但除了限于一个表之外,我找不到任何关于它的文档。这个(TableGateway)类的phpdoc表示可以传递一个数组,但同样,我不确定它是否接受多个表。

    例如在Module.php中:

     'Application\Model\LoginModel' => function($sm) {
         $table_gateway = $sm->get('LoginService');
         $table = new LoginModel($table_gateway);
         return $table;
     },
    
     'LoginService' => function($sm) {
         $db_adapter = $sm->get('Zend\Db\Adapter\Adapter');
         $result_set_prototype = new ResultSet();
         $result_set_prototype->setArrayObjectPrototype(new Login());
         return new TableGateway(array('admins', 'members'), $db_adapter, null, $result_set_prototype);
     }
    

    是否可以这样做,并像这样引用或绑定多个表,还是只允许每个实例使用一个表?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dolly Aswin    8 年前

    不,不是。表网关对象旨在提供表示数据库中表的对象。 Array 可以传递给构造函数,但如果您传递它,您将得到 InvalidArgumentException 。请检查此代码

    https://github.com/zendframework/zend-db/blob/release-2.8.2/src/TableGateway/TableGateway.php#L34,L35

    请再看一遍 TableGateway 这里的文档

    https://framework.zend.com/manual/2.4/en/modules/zend.db.table-gateway.html