将3个sql查询转换为1个

vs3odd8k  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(276)

我想弄一份日历清单,有些是公共的,有些是私人的。对私有日历的访问通过一个桥接表进行管理,该表列出了日历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);
0md85ypi

0md85ypi1#

不是每次codeigniter查询生成器都是最好的解决方案。在我看来,对于更复杂的查询,最好直接查询数据库,而不是使用模型。
您可以轻松地使用2个连接执行查询,以获得所有结果,而不需要无用的数据。这样可以更快地工作,并且在代码中看起来更干净。

相关问题