当需要条件查找时,可以使用下面的注入方法:

//我要预约 yudoc_name yudoc_keshi yudoc_jibing yudoc_hospital  这是需要帅选的条件
public function userYuYueDoc(Request $r) {
$data = $r->all();
//获取医生
$res = \DB::table('dxjk_yudoc')
->where('yudoc_status',2)
->where(function($query)use($data){
if($data['yudoc_name'] !== ''){//这一步成立才会查询
$query->where('yudoc_name','like', '%'.$data['yudoc_name'].'%');
}
})
->where(function($query)use($data){
if($data['yudoc_jibing'] !== ''){
//按疾病查找
$jibing_res = \DB::table('dxjk_yudoc')
->select('yudoc_id','yudoc_jibing')
->get();
$doc_id = array();
if(!empty($jibing_res)){
foreach($jibing_res as $key => $val){
$val->yudoc_jibing = json_decode($val->yudoc_jibing,true);
if(in_array($data['yudoc_jibing'],$val->yudoc_jibing)){
array_push($doc_id,$val->yudoc_id);
}
}
}
$doc_id = array_unique($doc_id);
$query->whereIn('yudoc_id', $doc_id);
}
})
->where(function($query)use($data){
if($data['yudoc_keshi'] !== ''){
$query->where('yudoc_keshi', $data['yudoc_keshi']);
}
})
->where(function($query)use($data){
if($data['yudoc_hospital'] !== ''){
//查找该医院所属医生,并去重,组成数组
$doc_res = \DB::table('dxjk_docwork')
->select('docwork_yid')
->where('docwork_hospital',$data['yudoc_hospital'])
->get();
$doc_id = array();
if(!empty($doc_res)){
foreach($doc_res as $key => $val){
array_push($doc_id,$val->docwork_yid);
}
}
$doc_id = array_unique($doc_id);
$query->whereIn('yudoc_id', $doc_id);
}
})
->orderBy('yudoc_tuijian')
->paginate(10)
->toArray();
if (!empty($res['data'])) {
//将查询的时间和图片处理下
$basePath = base_path();
$basePath = $basePath."/public/uploads";
foreach($res['data'] as $key => $val){
//获取医生的出诊医院
$hospital = \DB::table('dxjk_docwork')
->select('docwork_hospital')
->where('docwork_yid',$val->yudoc_id)
->distinct()
->get();
if(!empty($hospital)){
$val->yudoc_hospital = $hospital;
$yudoc_money = \DB::table('dxjk_docwork')
->select('docwork_money')
->where('docwork_yid',$val->yudoc_id)
->where('docwork_hospital',$hospital[0]->docwork_hospital)
->distinct()
->get();
$val->yudoc_money = $yudoc_money[0]->docwork_money;
} $val->yudoc_time = date('Y-m-d',$val->yudoc_time);
$val->yudoc_pic = json_decode($val->yudoc_pic,true);
if(!empty($val->yudoc_pic)){
foreach($val->yudoc_pic as $k => $v){
// $img_file = $basePath.$v;
// $img_info = getimagesize($img_file);
// $val->yudoc_pic[$k] = "data:{$img_info['mime']};base64," . base64_encode(file_get_contents($img_file));
$val->yudoc_pic[$k] = self::urlPic . $v;
}
}
$val->yudoc_jibing = json_decode($val->yudoc_jibing,true);
}
return ['code' => 1000, 'data' => $res];
}else{
return ['code' => 1001, 'data' => ['message' => '未查到医生!']];
} }

laravel 中条件查询 function模式的更多相关文章

  1. Laravel中服务提供者和门面模式

    在laravel中,我们可能需要用到自己添加的类时,可以建立一个文件夹专门存放类文件,也可以使用laravel的服务提供者的方式来使用. 这两者其实区别不大,主要是前者使用的话,会跟业务代码产生依赖, ...

  2. laravel中通过查询构造器,实现数据的curd

    //查询构造器: public function query1(){ //利用查询构造器,插入数据: /*$num=DB::table('student')->insert( ['name'=& ...

  3. laravel 中数据库查询结果自动转数组

    今天在项目中再次碰见laravel中从数据库中查询到的结果是对象,用toArray也不好用,之前改过一次,印象中是在/confing/database.php,    'fetch' => PD ...

  4. Mysql数据库中条件查询

    1.concat(字符串拼接) 作用:将选中的列进行拼接  写法 AS的作用就是属性名 SELECT CONCAT(ename,job) AS 你猜 FROM emp; 2.条件查询 语法: sele ...

  5. laravel多条件查询,及分页

    $res = DtkModel::where('ID','>','1')->select("ID")->get()->paginate(20);//不成立 ...

  6. Laravel中的查询构造器

    public function query(){ //新增数据 //$bool = DB::table('wd_user')->insert(['username'=>'jack']); ...

  7. laravel 多条件查询

    select * from homework where (id between 1 and 10 or id between 50 and 70) and complete = 1 and (tit ...

  8. laravel多条件查询(and,or嵌套查询)

    原生sql select * from homework where (id between 1 and 10 or id between 50 and 70) and complete = 1 an ...

  9. laravel带条件查询手动分页

    后台php代码: //手动分页 $users = $kaoqin; //打算输出的数组,二维 $perPage = 10; if ($request->has('page')) { $curre ...

随机推荐

  1. java 与大数据学习较好的网站

    C# C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!https://www.cnblogs.com/doforfuture/p/6293926.html ...

  2. Gamma函数相关matlab代码

    1.Gamma函数: Gamma函数matlab代码: x=:0.5:5syms t y=)*exp(-t),,inf) y=double(y) plot(x,y,) 图像如下: 2.lgΓ(x)函数 ...

  3. Rancher + K8S RestApi使用

      1前言 1.1使用的软件及版本 软件 版本号 Rancher 1.6stable Kubernetes 1.8.3 Docker 1.12.6 1.2 Rancher与K8S的RESTAPI差异 ...

  4. NumPy数组创建例程

    NumPy - 数组创建例程 新的ndarray对象可以通过任何下列数组创建例程或使用低级ndarray构造函数构造. numpy.empty 它创建指定形状和dtype的未初始化数组. 它使用以下构 ...

  5. 使用Entity Framework时遇到的各种问题总结

    在这里记录一下之前使用Entity Framework(4.3.1版本)遇到的问题. 更新没有设置主键的表 在默认情况下,EF不能对一个没有主键的表进行更新.插入和删除的动作.用xml方式查看edmx ...

  6. hdu 5980 Find Small A(水,模拟)

    Find Small A Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  7. python递归 及 面向对象初识及编程思想

    递归 及 面向对象初识及编程思想   一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递 ...

  8. List排序共通代码

    此共通方法可以根据特定字段进行排序 package com.gomecar.index.common.utils; import java.lang.reflect.Method; import ja ...

  9. 解决webpack vue 项目打包生成的文件,资源文件均404问题

    最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报404错误...网上查找了一堆解决办法,总结如下 一.首先修改c ...

  10. sphinx使用

    一. 1.先得包含下载的文件 include'./sphinx/api/sphinxapi.php'; $sphinx= new SphinxClient(); $sphinx->SetServ ...