首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >组合2个SQL语句PHP OOP

组合2个SQL语句PHP OOP
EN

Stack Overflow用户
提问于 2019-11-26 03:12:40
回答 1查看 77关注 0票数 1

我让这两个函数执行两个不同的查询:

代码语言:javascript
运行
复制
public function getListPerPage($limit, $offset) {
    $dql = "SELECT b FROM Entities\Brain b WHERE b.status = '1' ORDER BY b.id DESC";
    $query = $this->getEntityManager()->createQuery($dql);

代码语言:javascript
运行
复制
public function getHiddenItems($limit, $offset, $brain_user_id) {
    $dql = "SELECT b FROM Entities\Brain b WHERE b.status = '2'
            AND b.user = :brain_user_id ORDER BY b.id DESC";
    $query = $this->getEntityManager()->createQuery($dql);
    $query->setParameter('brain_user_id', $brain_user_id);

我想将它们合并到一个函数和一个查询中,如何将这两个语句合并到一个查询中?

当我读到许多其他问题时,我尝试使用UNION,但对我不起作用。

我尝试使用联合的方式是:

代码语言:javascript
运行
复制
"(SELECT b FROM Entities\Brain b WHERE b.status = '1')
  UNION (SELECT b FROM Entities\Brain b WHERE b.status = '2'
  AND b.user = :brain_user_id) ORDER BY b.id DESC";

给了我一个错误,也许我的语法是错误的?

EN

回答 1

Stack Overflow用户

发布于 2019-11-26 07:55:52

只需使用一个模型方法,将每个查询的结果存储在一个单独的变量上,然后将包含两个结果的数组(或对象,您选择的)返回给控制器。

例如:

代码语言:javascript
运行
复制
public function getListAndHiddenItems($limit, $offset, $brain_user_id)
{
  $this->load->database();
  $this->db->select('fields');
  $this->db->from('table_one');
  $query = $this->db->get();

  $list = $query->result();

  $this->db->select('other_fields');
  $this->db->from('table_two');

  $query = $this->db->get();
  $hidden = $query->result();

  $result = array('list' => $list, 'hidden' => $hidden);

  return $result;
}

在每个查询中添加所需的任何子句、连接等。您只需要从控制器调用这个方法,就可以在不同的数组元素中获得两个结果集

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

https://stackoverflow.com/questions/59038632

复制
相关文章

相似问题

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