Php zf2";加入为;语法
我已经研究过了,但找不到这个问题的答案。 我正在连接多个表,这些表都使用“id” 问题是我需要区分哪个id属于哪个表。在mysql中,通常使用AS命令: tableA.id作为tableAID 在多个表使用一个id的情况下,如何将其合并到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
$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()
);