laravel 列表搜索查询(when,with用法以及关联图像id处理图像路径)

laravel中比较常规的列表查询:
/**
 * 活动列表
 * @param Request $request
 * @return \Illuminate\Http\JsonResponse
 */
public function getActiveList(Request $request,UrlManager $urlManager)
{

   $name = $request->get('name');                             //活动标题
   $start_time = $request->get('start_time');                 //活动开始时间
   $author_user_name = $request->get('author_user_name');     //活动发布者
   $active_classify_id = $request->get('active_classify_id'); //活动分类

   $limit = (int) $request->get('limit', 15);
   $offset = (int) $request->get('offset', 0);


   $query = ActiveContent::with(['user'])
      ->when($active_classify_id, function ($query) use ($active_classify_id) {
         $query->where('active_classify_id', $active_classify_id);
      })
      ->when($name, function ($query) use ($name) {
         $query->where('name', 'like', sprintf('%%%s%%', $name));
      })
      ->when($start_time, function ($query) use ($start_time) {
         $query->where('created_at', '>=', $start_time);
      })
      ->when($author_user_name, function ($query) use ($author_user_name) {
         return $query->whereHas('user', function ($query) use ($author_user_name) {
            return $query->where('name', 'like', '%'.$author_user_name.'%');
         });
      });

   $total = $query->count('id');
   $items = $query->limit($limit)
      ->offset($offset)
      ->orderBy('weight', 'desc')
      ->orderBy('id', 'desc')
      ->paginate()->toArray();

   foreach($items['data'] as $key=>$value){
      //获取活动封面
      $active_face = ActiveContent::with('faces')->where('id', $value['id'])
         ->select('face', 'id')->get()->keyBy('id');

      $items['data'][$key]['face']=(isset($active_face[$value['id']]) && $active_face[$value['id']]->faces) ? $urlManager->make($active_face[$value['id']]->faces->file) : '';

   }


   return response()->json($items, 200, ['x-ad-total' => $total]);

}
 
 

 

 

转载于:https://www.cnblogs.com/sgm4231/p/9641809.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值