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

$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;
}
阅读 2.4k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题