我想弄一份日历清单,有些是公共的,有些是私人的。对私有日历的访问通过一个桥接表进行管理,该表列出了日历id(ccalid)和用户id(cuserid)。我可以做到这一点,但使用3个sql查询。
仅使用一个查询就可以实现这一点吗?我试过了,但似乎从来没用过。
$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);
1条答案
按热度按时间0md85ypi1#
不是每次codeigniter查询生成器都是最好的解决方案。在我看来,对于更复杂的查询,最好直接查询数据库,而不是使用模型。
您可以轻松地使用2个连接执行查询,以获得所有结果,而不需要无用的数据。这样可以更快地工作,并且在代码中看起来更干净。