Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php zf2";加入为;语法_Php_Mysql_Sql_Zend Framework2 - Fatal编程技术网

Php zf2";加入为;语法

Php zf2";加入为;语法,php,mysql,sql,zend-framework2,Php,Mysql,Sql,Zend Framework2,我已经研究过了,但找不到这个问题的答案。 我正在连接多个表,这些表都使用“id” 问题是我需要区分哪个id属于哪个表。在mysql中,通常使用AS命令: tableA.id作为tableAID 在多个表使用一个id的情况下,如何将其合并到zf2大型查询中 $select = $sql->select(); $select->from('tableName') ->columns(array('*')) ->join('tableA', 'tableA.id = tab

我已经研究过了,但找不到这个问题的答案。 我正在连接多个表,这些表都使用“id”

问题是我需要区分哪个id属于哪个表。在mysql中,通常使用AS命令:

tableA.id作为tableAID

在多个表使用一个id的情况下,如何将其合并到zf2大型查询中

 $select = $sql->select();
 $select->from('tableName')
->columns(array('*'))
->join('tableA', 'tableA.id = tableB.id', array('id')) 
->join('tableC', 'tableC.id = tableB.id', array('id')) 
->where() //sql command continues
我认为我需要的是这样的东西:

->join('tableA', 'tableA.id = tableB.id', array('id as tableAID')) 
->join('tableC', 'tableC.id = tableB.id', array('id as tableCID')) 
我原以为这样可能行得通,但它破坏了规则:

->join('tableA', 'tableA.id = tableB.id', array('id => tableAID'))

谢谢

你们非常接近。要定义列的别名,只需编写:

->join('tableA', 'tableA.id = tableB.id', array('alias' => 'column_name'))

您刚刚错过了结束和开始一个新字符串。

在我看来,使用联接进行简单选择的最佳方式不是zend方式:

只需在Sql中创建一个视图

CREATE VIEW V_My_Select AS
SELECT A.*, B.a_field, C.another_field
FROM table_a AS A 
INNER JOIN table_b AS B
    ON A.id = B.table_a_id
INNER JOIN table_c AS C
    ON A.id = C.table_a_id;
然后,您只需修改实体以添加从视图添加的新属性(但我想您已经这样做了,以使用select using JOIN)

然后,只需像处理任何实体一样简单地进行选择:

$this->$tableGateway->select();
实际上,这里的目标不仅仅是简化select的zend编码:
=>全局性能最好在php和sql之间共享工作。。。sql能够管理的处理(通过视图、触发器或存储过程)越多,php所能做的就越少

如果我了解你需要了解的内容。您可以执行以下操作。 将表A与表B连接到

 $select = $sql->select();
 $select->from(array('A',=>'tableA'));

 $select->join(array('B'=>'tableB'), 
              'A.id = B.A_id',array()
            );