Laravel ORM查询(学习/记录)

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版权协议,转载请附上原文出处链接和本声明。