1. 首页
  2. PHP

thinkphp 几种高级查询记录

1.使用数组查询,动态添加查询条件

$wrap = (new Query())->where($map);
if (!empty($project_id)) {
    $wrap->where('find_in_set(' . $project_id . ', project_id)');
}
$numb = model('Data')->getDataNumb($wrap);

2.组合闭包查询,和上面例子效果类似

$wrap = function ($query) use($map, $project_id) {
    $query->where($map);
    if (!empty($project_id)) {
        $query->where('find_in_set(' . $project_id . ', project_id)');
    }
};

3.使用数组查询,针对某个字段or查询

$map[] = array(
    'end_time', array('>=', date('Y-m-d H:i:s', strtotime($end_time_first))), array('null'), 'or'
);

4.使用数组查询,通过 Db::raw() 增加原生查询条件

$map = array(
    array('id', '=', 1),
    Db::raw('find_in_set(id, "1,2,3,4")')
);

TOP