【发布时间】:2011-01-15 10:23:37
【问题描述】:
活动记录是一个新概念,但有时我发现很难让更复杂的查询工作。我发现这至少是 CI 文档缺乏的一个地方。
无论如何, 这是我写的sql。它返回用户尚未完成且在用户级别要求内的未完成任务的预期结果:
SELECT writing_quests . *
FROM `writing_quests`
LEFT OUTER JOIN members_quests_completed ON members_quests_completed.quest_id = writing_quests.id
LEFT OUTER JOIN members ON members.id = $user_id
WHERE writing_quests.unlocked =1
AND writing_quests.level_required <= $userlevel
AND members_quests_completed.user_id IS NULL
这是codeigniter活动记录查询,它返回所有已解锁且在用户级别要求内的任务:
$this->db->select('writing_quests.*');
$this->db->from('writing_quests');
$this->db->join('members_quests_completed', 'members_quests_completed.quest_id = writing_quests.id', 'left outer');
$this->db->join('members', "members.id = $user_id", 'left outer');
$this->db->where('writing_quests.unlock', 1);
$this->db->where('writing_quests.level_required <=', $userlevel);
$this->db->where('members_quests_completed.user_id is null', null, true);
我猜我请求 Null 的方式有问题。为了彻底,我想我会包括所有内容。
【问题讨论】:
-
有什么问题是什么意思?
-
查询返回不同的结果。
标签: mysql codeigniter activerecord