【发布时间】:2020-05-24 16:37:01
【问题描述】:
我正在尝试获取日历列表 - 有些是公开的,有些是私有的。对私有日历的访问是通过列出日历 ID (ccalId) 和用户 ID (cuserId) 的桥接表来管理的。我可以做到这一点,但使用 3 个 SQL 查询。
是否可以仅使用一个查询来实现这一目标?我尝试过 JOIN,但它似乎从来没有工作过。
$calModel->where('calTeam',session()->get('teamId'));
$calModel->where('calType','public');
$calModel->where('calStatus','active');
$data = $calModel->get()->getResultArray();
$calUserModel->select('ccalId');
$calUserModel->where('cuserId', session()->get('id'));
$callist = $calUserModel->get()->getResultArray();
$newarray = implode(", ", $callist);
$calModel->where('calTeam',session()->get('teamId'));
$calModel->whereiI('id', $newarray);
$data2 = $calModel->get()->getResultArray();
$data = array_unique(array_merge($data,$data2), SORT_REGULAR);
【问题讨论】:
-
这是什么数据库?您能否提供架构、示例数据和预期输出。我在这里看不到任何 SQL 查询。
-
这是代码点火器 (php) 中的 SQL 构建器
-
您缺少“来自”子句!这些表是如何相关的?
$calModel->whereiI是错别字 -
我正在使用模型,所以我不需要指定 from 子句。上面的代码有效。问题是它是否可以简化
-
它可以简化您的代码并在单个查询中进行这些查询。但是正如@SrinikaPinnaduwage 所说,请提供有关您的数据库的更多信息。
标签: php sql codeigniter