我是Code Igniter
的新用户,就像其active record
功能一样,现在有任何有用的步骤或提示或任何指南< / strong>如何在SQL Queries
样式中转换我的pervoiusly书面简单CI
,就像这是我的写作简单查询
SELECT *
FROM hs_albums
WHERE id NOT IN (SELECT album_id
FROM hs_delete_albums
WHERE user_id = 72
AND del_type = 1)
AND ( created = 72
OR club_id IN (SELECT cbs.id
FROM hs_clubs cbs
INNER JOIN hs_club_permissions cbp
ON cbs.id = cbp.club_id
WHERE cbp.user_id = 72
AND cbp.status = 2)
OR group_id IN (SELECT gps.id
FROM hs_groups gps
INNER JOIN hs_group_permissions grp
ON gps.id = grp.group_id
WHERE grp.user_id = 72
AND grp.status = 2)
OR comp_id IN (SELECT cmp.id
FROM hs_companies cmp
INNER JOIN hs_comp_permissions comp
ON cmp.id = comp.comp_id
WHERE comp.user_id = 72
AND comp.status = 2) )
答案 0 :(得分:0)
简短的回答是:你没有。
CodeIgniter的Active Record实现基本上是一个基于SQL的层,它使编写查询变得更容易:
然而,它无法完成SQL可以做的所有事情,虽然我总是尝试尽可能使用ActiveRecord,但最好还是忘记使用它并只使用$this->db->query()
来直接写你的查询。在这种情况下,正如mamdouh alramadan所说,CodeIgniter不支持子查询,因此无论如何都无法使用ActiveRecord复制此查询。
要记住的是ActiveRecord是一个工具,而不是一个要求。如果您正在使用CodeIgniter而不使用ORM,则应该出于上述原因使用它。但是,一旦它开始妨碍,您应该考虑是否更好的做法是手动编写查询。