How to nest WHERE params in Datamapper ORM for Codeigniter?
我在使用 Datamapper ORM for Codeigniter 时遇到了特定查询问题。我的数据模型设置为有博客文章,每篇文章都有许多类别、用户和标签。我想获取与特定类别、用户或标签相关但状态为"已发布"或"已计划"的博客文章。
也就是说,我想要完成的是:
在 Datamapper ORM 中,我尝试了以下语法(假设我想要名称为 \\'General\\' 的类别中的帖子):
1 2 3 4 | $posts->where_related('category', 'name', 'General') ->where('status', 'published') ->or_where('status', 'scheduled') ->get(); |
但是,这会导致获得以下帖子:
我意识到我可以用原始 SQL 编写查询,例如:
...后面是一些更复杂的 JOIN 语句,但我使用 Datamapper 的全部原因是为了更轻松地处理关系,所以我认为我不应该用原始的方式写出这整件事SQL 只是为了嵌套一个 OR 条件!我也意识到我可以使用子查询,但我不认为它应该那么复杂。
我有什么遗漏吗?某种方式来组织这个查询,以便我可以使用 Datamapper 的语法来完成它?似乎能够指定 AND/OR 语句的操作顺序应该以某种方式内置......
如果您的 where 子句需要括号,则需要添加它们。
有关一些示例,请参见 http://datamapper.wanwizard.eu/pages/get.html#Query.Grouping。