thinkphp框架多条件查询案例

直接上代码



$type_id = $_GET['typeid'] ?? ''; //父 ID
$subitem_id = $_GET['subitem'] ?? ''; //子 ID
$orderby = $_GET['orderby'] ?? ''; //排序方式 最新new 热度hot 点赞zan 收藏sc

$query = Db::name('ymtype'); // 初始查询

// 条件过滤
if (!empty($type_id)) {
    $query->where('parent_id', $type_id);
}
if (!empty($subitem_id)) {
    $query->where('id', $subitem_id);
}

// 排序
if (!empty($orderby)) {
    switch ($orderby) {
        case 'new':
            $query->order('created_at', 'desc');
            break;
        case 'hot':  //最热,download_log表 ym_id出现次数最多  ym_id就是ymtype的id。下面那个也一样
            $query->alias('y')
                  .leftJoin('download_log dl', 'y.id = dl.ym_id')
                  .field('y.*, COUNT(dl.ym_id) AS download_count')
                  .group('y.id')
                  .order('download_count', 'desc');
            break;
        case 'zan':
            $query->order('likes', 'desc');
            break;
        case 'sc':
            $query->alias('y')
                  .leftJoin('sc_log sl', 'y.id = sl.ym_id')
                  .field('y.*, COUNT(sl.ym_id) AS favorite_count')
                  .group('y.id')
                  .order('favorite_count', 'desc');
            break;
        default:
            $query->order('id', 'desc');  // 默认按 ID 降序
            break;
    }
}

// 执行查询
$subItem_data = $query->select();

posted @ 2024-04-20 00:21  79524795  阅读(21)  评论(0编辑  收藏  举报