laravel 多检索条件列表查询
- public function indexQuestions(Request $request, ResponseFactoryContract $response, QuestionModel $questionModel)
- {
- $userID = $request->user('api')->id ?? 0;
- $limit = max(1, min(30, $request->query('limit', 15)));
- $offset = max(0, $request->query('offset', 0));
- $subject = $request->query('subject'); //问题主题
- $topic_id = $request->query('topic_id'); //话题id
- if(!$topic_id){
- return response()->json(['message' => ['话题id必须给出']], 422);
- }
- //话题关联问题id
- $questions_id=QuestionTopic::where('topic_id',$topic_id)->pluck('question_id');
- if(!$questions_id){
- return response()->json([], 200);
- }else{
- $questions_id=$questions_id->toArray();
- }
- $map = [
- 'all' => function ($query) {
- $query->orderBy('id', 'desc');
- },
- 'new' => function ($query) {
- $query->where('answers_count', 0)
- ->orderBy('id', 'desc');
- },
- 'hot' => function ($query) use ($questionModel) {
- $query->whereBetween('created_at', [
- $questionModel->freshTimestamp()->subMonth(1),
- $questionModel->freshTimestamp(),
- ])->where('answers_count', '!=', 0);
- $query->orderBy('answers_count', 'desc');
- },
- 'reward' => function ($query) {
- $query->where('amount', '!=', 0)
- ->orderBy('id', 'desc');
- },
- 'excellent' => function ($query) {
- $query->where('excellent', '!=', 0)
- ->orderBy('id', 'desc');
- },
- 'follow' => function ($query) use ($userID) {
- $query->whereExists(function ($query) use ($userID) {
- $query->from('question_watcher')
- ->where('question_watcher.user_id', '=', $userID)
- ->whereRaw('question_watcher.question_id = questions.id');
- });
- },
- ];
- $type = in_array($type = $request->query('type', 'all'), array_keys($map)) ? $type : 'all';
- call_user_func($map[$type], $query = $questionModel
- ->whereDoesntHave('blacks', function ($query) use ($userID) {
- $query->where('user_id', $userID);
- })
- ->when($subject, function ($query) use ($subject) {
- return $query->where('subject', 'like', '%'.$subject.'%');
- })
- ->whereIn('id',$questions_id)
- ->limit($limit)
- ->offset($offset));
- $questions = $query->get();
- $questions->load('user');
- return $response->json($questions->map(function (QuestionModel $question) use ($userID) {
- //作者匿名
- if ($question->anonymity && $question->user_id !== $userID) {
- $question->addHidden('user');
- $question->user_id = 0;
- }
- $question->answer = $question->answers()
- ->whereDoesntHave('blacks', function ($query) use ($userID) {
- $query->where('user_id', $userID);
- })
- ->with('user')
- ->orderBy('id', 'desc')
- ->first();
- if ($question->answer) {
- if ($question->answer->anonymity && $question->answer->user_id !== $userID) {
- $question->answer->addHidden('user');
- $question->answer->user_id = 0;
- }
- $question->answer->liked = (bool) $question->answer->liked($userID);
- $question->answer->collected = (bool) $question->answer->collected($userID);
- $question->answer->rewarded = (bool) $question->answer->rewarders()->where('user_id', $userID)->first();
- $question->look && $question->answer->could = true;
- if ($question->look && $question->answer->invited && (! $question->answer->onlookers()->where('user_id', $userID)->first()) && $question->answer->user_id !== $userID && $question->user_id !== $userID) {
- $question->answer->could = false;
- $question->answer->body = null;
- }
- }
- return $question;
- }))->setStatusCode(200);
- }
laravel 多检索条件列表查询的更多相关文章
- 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询条件的处理
在我Boostrap框架中,很多地方需要使用bootstrapTable表格插件和jstree树形列表插件来共同构建一个比较常见的查询界面,bootstrapTable表格插件主要用来实现数据的分页和 ...
- 列表查询组件代码, 简化拼接条件SQL语句的麻烦
列表查询组件代码, 简化拼接条件SQL语句的麻烦 多条件查询
- laravel多条件模糊查询
1.运用cmd在项目根目录下创建路由组 php artisan make:controller queryController --resource 1.1数据库信息(student) CREATE ...
- Oracle 检索数据(查询数据、select语句)
用户对表或视图最常进行的操作就是检索数据,检索数据可以通过 select 语句来实现,该语句由多个子句组成,通过这些子句完成筛选.投影和连接等各种数据操作,最终得到想要的结果. 语法: select ...
- asp.net mvc多条件+分页查询解决方案
开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...
- JSP+Servlet+javabean+oracle实现页面多条件模糊查询
之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写or ...
- SHAREPOINT - CAML列表查询
首先要了解的是CAML(Collaboration Application Markup Language)不仅仅是用在对列表.文档库的查询,字段的定义,站点定义等处处使用的都是CAML. 简单的提一 ...
- atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模
)----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为range----@Conditional(displayType = displayType.ra ...
- 【Javascript】列表查询页面,简单地保存上一次查询的查询参数
开发中经常做一些查询参数 + 列表参数的功能,这些功能有时候需提供导出Excel,或带超链接到其他明细页面的功能点. 在一些交互性要求严格的系统,需求方会要求: 用户第一个输入某些查询条件进行列表查询 ...
随机推荐
- 省市联动-获取资源文件xml 获取nodes的方法要学会
try { SAXReader reader = new SAXReader(); InputStream input = this.getClass().getResourceAsStream(&q ...
- python,栈的小例子
''' 1.首先确认栈的概念,先进后出 2.初始化的时候如果给了一个数组那么就要将数组进栈 ''' class Stack: def __init__(self,start=[]): self.sta ...
- 椭圆曲线密码学ECC
椭圆曲线密码学(Elliptic curve cryptography),简称ECC,是一种建立公开密钥加密的算法,也就是非对称加密.类似的还有RSA,ElGamal算法等.ECC被公认为在给定密 ...
- Pytorch tutorial 之Transfer Learning
引自官方: Transfer Learning tutorial Ng在Deeplearning.ai中讲过迁移学习适用于任务A.B有相同输入.任务B比任务A有更少的数据.A任务的低级特征有助于任务 ...
- 美团点评基于MGR的CMDB高可用架构搭建之路【转】
王志朋 美团点评DBA 曾在京东金融担任DBA,目前就职于美团点评,主要负责金融业务线数据库及基础组件数据库的运维. MySQL Group Replication(以下简称MGR),于5.7.17版 ...
- python骚操作之...
python中的Ellipsis对象.写作:- 中文解释:省略 该对象bool测试是为真 用途: 1.用来省略代码,作用类似于pass的一种替代方案. from collections.abc imp ...
- python3+selenium入门01-环境搭建
作为一个测试,在最近两年应该有明显的感觉.那就是工作变的难找,要求变的高了,自动化测试,性能测试等.没有自动化测试能力,只会点点点工作难找不说,工资也不高.所以还是要学习一些技术.首先要学习一门编程语 ...
- CF55D: Beautiful Number
传送门 一句话题意 求 l~r 之间有多少个数能整除自己各位上的数(排除 0 ) 分析 然后我们一看就知道数位 dp ,但是状态很难设计啊 QWQ 我们可以发现所有数位的 lcm 最大为 2520 ( ...
- HDU contest808 ACM多校第7场 Problem - 1008: Traffic Network in Numazu
首先嘚瑟一下这场比赛的排名:59 (第一次看到这么多 √ emmmm) 好了进入正文QAQ ...这道题啊,思路很清晰啊. 首先你看到树上路径边权和,然后还带修改,不是显然可以想到 树剖+线段树 维护 ...
- 制作ecc证书(linux命令行)
生成ECC证书.Debian:/home/test# openssl ecparam -out EccCA.key -name prime256v1 -genkeyDebian:/home/test# ...