我想用zf2:-中的where子句联合两个表
table1 app_followers
table2 app_users
其中条件可以是任何
并且按updated_date排序。
请告诉我zend2的查询。
谢谢。。
使用UNION是ZF2:
使用ZF2专用类Combine
Zend\Db\Sql\Combine
new Combine(
[
$select1,
$select2,
$select3,
...
]
)
使用联合收割机的详细示例如下:
$select1 = $sql->select('java');
$select2 = $sql->select('dotnet');
$select1->combine($select2);
$select3 = $sql->select('android');
$selectall3 = $sql->select();
$selectall3->from(array('sel1and2' => $select1));
$selectall3->combine($select3);
$select4 = $sql->select('network');
$selectall4 = $sql->select();
$selectall4->from(array('sel1and2and3' => $selectall3));
$selectall4->combine($select4);
$select5 = $sql->select('dmining');
$selectall5 = $sql->select();
$selectall5->from(array('sel1and2and3and4' => $selectall4));
$selectall5->combine($select5);
这相当于UNION:的普通SQL查询
SELECT * FROM java
UNION SELECT * from dotnet
UNION SELECT * from android
UNION SELECT * from network;
UNION SELECT * from dmining;
我希望它能有所帮助。
我想做一个类似的任务,花了很多时间想办法以正确的方式完成。
LaminasDbSqlCombine
的想法非常好,但您不能将排序应用于该对象,因此,在这种情况下它毫无用处。
最后,我得到了下一个代码:
$skill = $sql->select('skill');
$language = $sql->select('language');
$location = $sql->select('location');
$occupation = $sql->select('occupation');
$skill->combine($language);
$language->combine($location);
$location->combine($occupation);
$combined = (new LaminasDbSqlSelect())
->from(['sub' => $skill])
->order(['updated_date ASC']);
然而,括号有点乱。如果这是你的事,请在Github上查看这条评论,但在MySQL id上并不重要,不确定其他数据库。