如何将 select 添加到 ZF2 中的某个位置?

How to do add a select into a where in ZF2?

首先大家好!=)

我想知道是否有人知道如何在诸如

的地方写 select
SELECT my_column
FROM my_table
WHERE field_1 = something
AND field_2 = ( SELECT field_2
                FROM my_table_2
                WHERE my_field = $myParam );

我知道如何在没有 select 的情况下编写此查询:

//This part shouldn't matter, it's just my way of connecting to table database
$select = $mytable1->getTableGateway()->getSQL()->select();

//This is where the fun begin
$select->colunms(array('my_column'))
       ->where(array('field_1' => 'something', 'field_2' => ??);

尝试 1: 使用另一个允许我连接到另一个基地的变量似乎不起作用,因为它当然不是数组或任何东西......

$select_2 = $myTable2->tableGateway->getSQL()->select();

$select_2->colunms(array('field_2'))
         ->where(array('my_field' => $myParam);
$select->colunms(array('my_column'))
       ->where(array('field_1' => 'something', 'field_2' => $select_2);

我尝试添加如下内容:

$var= $myTable2->getTableGateway()->selectWith($select_2);
//and then
$select->colunms(array('my_column'))
       ->where(array('field_1' => 'something', 'field_2' => $var->toArray());

也不行,因为当然不是一行...

我不认为 foreach 真的有必要

在我的想法走得太远之前有什么想法吗? 提前致谢

在 ZF1 中它是这样工作的:

$select_2 = $myTable2->tableGateway->getSQL()->select();

$select_2->columns(array('field_2'))
         ->where(array('my_field = ?' => $myParam);
$select->columns(array('my_column'))
       ->where(array('field_1 = ?' => 'something', 'field_2 = ?' => $select_2)

老实说,我不确定它是否适用于 ZF2,但请尝试添加通配符“?”到你的 where 子句。

最佳,