首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将原始sql转换为ZF2语句

将原始sql转换为ZF2语句
EN

Stack Overflow用户
提问于 2016-06-03 07:14:00
回答 1查看 203关注 0票数 0

在zf2中,我如何编写mysql查询并执行它。??

代码语言:javascript
复制
SELECT * FROM `user_modules` um JOIN ((SELECT vm.id, vm.module_code, vm.module_title,'video' AS type FROM video_master vm WHERE vm.is_deleted = 0) UNION (SELECT sm.id, sm.module_code, sm.module_title, 'slideshow' AS type FROM slideshow_master sm WHERE sm.is_deleted = 0) result ON um.module_id = result.id 
WHERE um.user_id='3' 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-03 08:46:01

我找到解决办法了!!

代码语言:javascript
复制
$userId   = '1';

$select = "SELECT * FROM `user_modules` um JOIN ((SELECT vm.id, vm.module_code, vm.module_title, 'video' AS type FROM video_master vm WHERE vm.is_deleted = 0) UNION (SELECT sm.id, sm.module_code, sm.module_title, 'slideshow' AS type FROM slideshow_master sm WHERE sm.is_deleted = 0)) temptable on um.module_id = temptable.id where um.user_id='". $userId ."'";

$resultSet = $this->adapter->query($select);
return $data = $this->resultSetPrototype->initialize($resultSet->execute())->toArray();

或OR可以使用ZF2方法:

代码语言:javascript
复制
$sql = new Sql($this->getAdapter());

$select = $sql->select()->from(array('um' => $this->table));

Get all slideshow modules

代码语言:javascript
复制
$select1 = $sql->select(array())->from(
             array("slideshow" =>'slideshow_master'))
          ->columns(array('id','module_code','module_title',"type" => new Expression("'Slideshow'")));

$select1 = $sql->select(array())->from(
             array("slideshow" =>'slideshow_master'))
          ->columns(array('id','module_code','module_title',"type" => new Expression("'Slideshow'")));

$select1->where("slideshow.is_deleted = 0");
$select1->order("slideshow.id");

获取所有视频模块

代码语言:javascript
复制
$select2 = $sql->select(array())->from(
              array("video" => 'video_master'))
           ->columns(
                 array('id','module_code','module_title',"type" => new Expression("'Video'")));

$select2->where("video.is_deleted = 0");
$select2->order("video.id");

两个第一选择的联盟

代码语言:javascript
复制
$select1->combine ( $select2, 'UNION' );

$select->join(array('result' => $select1), "result.id = um.module_id");

$select ->where("um.user_id='". $userId. "'");

$statement = $sql->prepareStatementForSqlObject($select);
return $this->resultSetPrototype->initialize($statement->execute())->toArray();

很抱歉我的打字和格式化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37608166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档