gpt4 book ai didi

php - 从同一 Controller 文件访问 2 个不同的表

转载 作者:行者123 更新时间:2023-11-29 22:20:44 24 4
gpt4 key购买 nike

我已经成功完成了 Zend Framework 2 手册中的专辑表教程。我已经使用tablegateway实现了。我可以看到他只使用了一张名为“album”的表,因此他根据该表来实现。

假设我有另一个名为“艺术家”的表,其中包含该“专辑”表中每个艺术家的信息。

现在在手册中,他简单地使用:

$this->getAlbumTable()->fetchAll();

现在我想对“artists”表做类似的事情,这样我的查询就可以是这样的:

$this->getArtistsTable()->fetchAll();

那么我应该更改或添加什么?我已经在 mySql 中创建了艺术家表,其中包含以下列:姓名、出生日期、国家/地区。

P.S:我不会使用连接或任何自动取款机。只是想访问同一 Controller (同一模块)中的第二个表。

解决方案:在 Venca 的帮助下,我能够解决这个问题:以下是您应该如何编辑 2 个表及更多表的出厂设置。

public function getServiceConfig()
{
// Given in Manual
return array(
'factories' => array(
'Album\Model\AlbumTable' => function($sm) {
$tableGateway = $sm->get('AlbumTableGateway');
$table = new AlbumTable($tableGateway);
return $table;
},
'AlbumTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Album());
return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
},

// Added another table named Artist
'Album\Model\ArtistTable' => function($sm) {
$tableGateway = $sm->get('ArtistTableGateway');
$table = new AlbumTable($tableGateway);
return $table;
},
'ArtistTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Artist());
return new TableGateway('artist', $dbAdapter, null, $resultSetPrototype);
},
),
);
}

现在您可以从 Controller 访问这两个表。问题解决了。这一天过得很愉快。

最佳答案

根据manual

  1. 创建模型
  2. 创建模型表
  3. 将工厂添加到您的模块

     return array(
    'factories' => array(
    'Album\Model\ArtistTable' => function($sm) {
    $tableGateway = $sm->get('ArtistTableGateway');
    $table = new ArtistTable($tableGateway);
    return $table;
    },
    'ArtistTableGateway' => function ($sm) {
    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
    $resultSetPrototype = new ResultSet();
    $resultSetPrototype->setArrayObjectPrototype(new Artist());
    return new TableGateway('artist', $dbAdapter, null, $resultSetPrototype);
    },
    ),
    );

关于php - 从同一 Controller 文件访问 2 个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30750729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com