Laravel ORM查询
需求: 当前分类下请根据用户的积分对文章列表进行排序
$userData = WechatUser::query()
->where($condition)
->orderBy('score','desc')->get()->toArray();
//获取只有用户ID的数组 [78,79,80,81]
$userIds = array_column($userData,'id');
// TODO 查询结果按照whereIn中数组的顺序进行排序
$dataList = Topic::query()
->where('category_id',$categoryId)
->whereIn('user_id',$userIds)
->orderByRaw('FIND_IN_SET(user_id,"'. implode(",", $userIds) .'"'.")")
->get();//分页paginate($limit)
//需要注意 FIND_IN_SET 函数的使用
//整理成SQL语句为:
/**
* select * from `topics`
* where `category_id` = 2 and `user_id` in (78,79,80,81)
* order by FIND_IN_SET(user_id, "78,79,80,81")"
*/
需求: 针对两个字段为区间时搜索
#开始时间 小于 请求时间 且 结束时间 大于 请求时间
$data = Model::query()->where(function ($query) use ($useTime) {
$query->whereRaw('? BETWEEN start_time and end_time', $useTime);
})->get();
/**
* date_add() #函数详细解释:
*/
date_add(date,INTERVAL expr type) #向日期添加指定的时间间隔
#参数详细解释:
#date 参数是合法的日期表达式。
#expr 参数是您希望添加的时间间隔。
#type 参数可以是:
MICROSECOND, #以微妙为计算单位
SECOND, #以秒为计算单位
MINUTE, #以分钟为计算单位
HOUR, #以小时为计算单位
DAY, #以天为计算单位
WEEK, #以周为计算单位
MONTH, #以月为计算单位
QUARTER, #以季度为计算单位
YEAR, #以年为计算单位
版权声明:本文为qq_39152376原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。