Php 如何在ZF2中的sql语句中准备sql语句?

Php 如何在ZF2中的sql语句中准备sql语句?,php,mysql,zend-framework2,Php,Mysql,Zend Framework2,我是ZF2新手,有以下问题: 在db表中,我得到了两个id,它们引用了另一个表。如果我 选择他们,我想显示球员的名字,而不是 id保存在表中 playerA和playerB是整数,保存玩家表中的玩家id。我已经熟悉了skeleton应用程序,但是我唯一可以传递到tableGateway->select()的子句是where子句 有人有主意吗?如何在ZF2中准备这样的语句 SELECT id, (SELECT name FROM player WHERE id = playerA) AS play

我是ZF2新手,有以下问题:

在db表中,我得到了两个id,它们引用了另一个表。如果我 选择他们,我想显示球员的名字,而不是 id保存在表中

playerA
playerB
是整数,保存玩家表中的玩家id。我已经熟悉了skeleton应用程序,但是我唯一可以传递到
tableGateway->select()
的子句是where子句

有人有主意吗?如何在ZF2中准备这样的语句

SELECT id, (SELECT name FROM player WHERE id = playerA) AS playerA, (SELECT name FROM player WHERE id = playerB) AS playerB FROM board
我找到的教程和参考资料都以连接结束。但这不适合这里,对吗

编辑: 下面是它,什么可以与skeleton应用程序配合使用

protected $select;

public function fetchAll()  {

$this->select = new Select();

$this->select->from('board')
    ->columns(array('id', 'kindOf', ...))
    ->join(['pA' => 'player'], 'pA.id = board.playerA', ['playerA' => 'name'])
    ->join(['pB' => 'player'], 'pB.id = board.playerB', ['playerB' => 'name']);

$resultSet = $this->tableGateway->selectWith($this->select);
return $resultSet;
}

您的问题不是ZF2问题,而是SQL问题。您可以编写以下示例:

SELECT id, pA.name AS playerA, pB.name AS playerB
FROM board
INNER JOIN player AS pA ON pA.id=board.playerA
INNER JOIN player AS pB ON pB.id=board.playerB
在ZF2中:

$select = new Select();
$select->from('board')
       ->columns('id')
       ->join(['pA' => 'player', 'pA.id = board.playerA', ['playerA' => 'name'])
       ->join(['pB' => 'player', 'pB.id = board.playerB', ['playerB' => 'name'])

您的问题不是ZF2问题,而是SQL问题。您可以编写以下示例:

SELECT id, pA.name AS playerA, pB.name AS playerB
FROM board
INNER JOIN player AS pA ON pA.id=board.playerA
INNER JOIN player AS pB ON pB.id=board.playerB
在ZF2中:

$select = new Select();
$select->from('board')
       ->columns('id')
       ->join(['pA' => 'player', 'pA.id = board.playerA', ['playerA' => 'name'])
       ->join(['pB' => 'player', 'pB.id = board.playerB', ['playerB' => 'name'])

对不起,我病了两个星期,现在又回到了活着的人身上。首先,谢谢你们的回复。我试着解决这个问题,结果终于成功了!我真的应该做更多的加入,而不是我上面所说的奇怪的话对不起,我病了两个星期,现在又回到了活着的人身上。首先,谢谢你的回复。我试着解决这个问题,结果终于成功了!我真的应该多做一些连接,而不是像上面那样做一些奇怪的声明=)