如果使用thinkphp查询数据库忽略不存在的查询条件?

发布于 2022-09-07 22:30:33 字数 1098 浏览 18 评论 0

$condition 里面会有时间的条件,这个时间的条件是可选条件,现在就想如果时间条件不存在如何把时间条件给去除?而时间条件存在时,则加上时间条件查询结果?

方法一:数组不存在会报错。

public static function getHomeworkByStudentId($id, $conditions)
{
    $conditions['startTime'] = '2018-09-01';
    $conditions['endTime']   = '2018-09-02';

    $result = self::where('id', '=', $id)
        ->whereTime('recordTime', '>', $conditions['startTime'])
        ->whereTime('recordTime', '<', $conditions['endTime'])
        ->select();

    return $result;
}

方法二:如果时间条件不存在,生成sql的时间条件就会变成0就像下面这样:

SELECT * FROM `homework` WHERE `id` = '1' AND ( `recordTime` >= 0 AND `recordTime` <= 0 )
public static function getHomeworkByStudentId($id, $conditions)
{
    $conditions['startTime'] = '2018-09-01';
    $conditions['endTime']   = '2018-09-02';

    $result =  self::where('id', ':id')
        ->whereTime('recordTime', '>=', ':startTime')
        ->whereTime('recordTime', '<=', ':endTime')
        ->bind($conditions)
        ->select();

    return $result;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

抚你发端 2022-09-14 22:30:33

ThinkPHP 5.1文档,最后一个 条件查询。

https://www.kancloud.cn/manua...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文