Zend Framework 2的多个表

use*_*605 8 zend-framework2

我是Zend Framework 2的新手.我成功完成了ZF2的专辑教程.现在我想只显示数据库中多个表的某些数据.我有一个简单的数据库设置与表,例如,人,书,status..etc.数据库应该做什么并不重要.我想知道的是,是否有一个教程可以向我展示从表连接中显示数据的分步指导.我已经看到代码片段显示了如何进行连接,但是我没有找到有关设置类的任何教程,以及如何配置Module.php.换句话说,相册中的模块在getServiceConfig()中有一个硬编码的表名.但是如何设置它以便它知道我正在从多个表中请求数据.另外,如果我想设置关系,我是否仍然为Album教程中的数据库表创建类,或者它是否会有所不同.你能帮忙,还是给我指路?如果您知道任何解释处理多个表的教程,那就太棒了.

Rob*_*len 5

ablums教程使用的Zend\Db\TableGateway不支持连接到多个表.

您需要Zend\Db直接使用或通过mapper类使用,例如AbstractDbMapper在ZfcBase模块中.

基本用法如下:

<?php

// Given that $dbAdapter is an instance of Zend\Db\Adapter\Adapter

use Zend\Db\Sql\Select();
use Zend\Db\ResultSet\ResultSet();

$select = new Select();
$select->from('album')
   ->columns(array('album.*', 'a_name' => 'artist.name'))
   ->join('artist', 'album.artist_id' = 'artist.id');

$statement = $dbAdapter->createStatement();
$select->prepareStatement($dbAdapter, $statement);
$driverResult = $statment->execute();

$resultset = new ResultSet();
$resultset->initialize($driverResult); // can use setDataSource() for older ZF2 versions.

foreach ($resultset as $row) {
        // $row is an ArrayObject
}
Run Code Online (Sandbox Code Playgroud)

join()方法用于执行albumartist表之间的连接.我们还用于columns()选择返回的列.在这种情况下,我创建了一个在artist表中a_name为该name列调用的别名.

一旦Select设置了对象,剩下的就是标准Db代码,它将返回ResultSet包含数据的对象.