直接上代码
$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();