php - Codeigniter 的 `where` 和 `or_where`

标签 php mysql codeigniter activerecord

我正在尝试在模型中指定查询

$this->db
        ->select('*')
        ->from('library')
        ->where('library.rating >=', $form['slider'])
        ->where('library.votes >=', '1000')
        ->where('library.language !=', 'German')
        ->where('library.available_until >=', date("Y-m-d H:i:s"))
        ->or_where('library.available_until =', "00-00-00 00:00:00")
        ->where('library.release_year >=', $year_start)
        ->where('library.release_year <=', $year_end)
        ->join('rating_repo', 'library.id = rating_repo.id')

所以,我遇到的问题是我的 or_where。我希望将 or 限制为仅 available_until 字段。然而,目前我得到的结果是德语,这不是我想要的。如何将我的 or_where 过滤器限制为仅 available_until 字段?

最佳答案

您可以只修改两行:

->where('(library.available_until >=', date("Y-m-d H:i:s"), FALSE)
->or_where("library.available_until = '00-00-00 00:00:00')", NULL, FALSE)

编辑:

省略 FALSE 参数会将反引号放在括号之前,并使它们成为表名称/值的一部分,从而使查询无法使用。

NULL 参数之所以存在,只是因为该函数要求第二个参数是一个值,而由于我们没有,所以我们发送 NULL。

关于php - Codeigniter 的 `where` 和 `or_where`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43764162/

相关文章:

php - 拉维尔 5.4 : get products with favorite and display favorites product for each user

MySQL自增ID突然跳到MAXINT,请问是什么原因?

mysql - 从正则表达式中删除自由间距(空格和注释)

php - Dropzone 接受的文件无法正常工作

php - 使用 Twitter Bootstrap 创建图片库

php - 有效运行多个 Web/PHP 应用程序

MYSQL - 索引和优化选择查询

php - 操作数类型冲突 : datetime2 is incompatible with int (Between)

php - 在 codeigniter 中找不到我的核心类 My_head

javascript - 如何将数据从 chrome 扩展程序发送到本地主机?