php - 结合 2 个 SQL 语句 PHP OOP
问题描述
我有这 2 个函数执行 2 个不同的查询:
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);
和
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,但对我不起作用。
我尝试使用 UNION 的方式是:
"(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";
给我一个错误,也许我的语法错误?
解决方案
只需使用一种模型方法,将每个查询的结果存储在单独的变量中,然后将包含两个结果的数组(或对象,您的选择)返回给控制器。
例如:
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;
}
在每个查询中添加您需要的任何子句、连接等。您只需从控制器调用这个单一方法,您将获得不同数组元素中的两个结果集
推荐阅读
- angular - 组件是2个模块声明的一部分:AppModule
- javascript - 如何在 JS 中键入建议功能时触发搜索?
- asp.net-core - SignalR 干扰另一个控制器
- c# - UWP XAML:自定义画笔以将进度条绘制为网格背景
- azure - Azure SQLDatabase 安全 - 无法从门户中删除动态数据屏蔽规则
- css - 命名页面和弹性框在 PDFReactor 中不起作用
- android - 我希望我的应用程序中的所有链接都以特定意图打开
- python - 验证字符串是否仅包含一系列数字 Python 2.7
- javascript - Vue.js:阻止后续请求直到前一个请求完成
- r - r 从 txt 文件中读取带引号的行