精华内容
下载资源
问答
  • laravel with 查询条件
    2021-06-29 16:18:02

    允许 with 为空:

    $this->model->with(['getCollect' => function ($quse ($user_id) {$q->where('user_id'$user_id);}])

    上面的查询方法可以给getCollect关联的表进行条件查询  当不存在时 getCollect 为null

    实际情况有时候会当getCollect 里条件不成立时整个语句返回空  则按照以下方法利用whereHas就好了:

    $this->model->whereHas('getCollect' ,function ($quse ($user_id) {$q->where('user_id'$user_id);})->with(['getCollect']);

    更多相关内容
  • } } 根据菜品价格区间查询筛选菜品: FoodsModel::with(['specs' => function($query){ $query->select(['title', 'price']); }]) ->whereHas('specs', function ($query) use ($params){ // price_from,price_end...

    例如以下表:

    • 菜品表: foods
    字段说明
    id主键
    title菜品名称
    • 菜品规格表: foods_specs
    字段说明
    id主键
    title规格名称
    foods_id菜品表ID
    price价格
    • 菜品模型: FoodsModel
    class FoodsModel extends Model
    {
      
         // 省略
         /**
         * 规格
         * @return HasMany
         */
        public function specs()
        {
            return $this->hasMany(\App\Model\FoodsSpecsModel::class, 'foods_id', 'id');
        }
     
       // 省略
    }
    

    菜品规格模型: FoodsSpecsModel

    class FoodsSpecsModel extends Model
    {
        protected $table = 'foods_specs';
     
        protected function foods()
        {
            return $this->belongsTo('App\Model\FoodsModel', 'foods_id', 'id');
        }
    }
    

    根据菜品价格区间查询筛选菜品:

    FoodsModel::with(['specs' => function($query){
                $query->select(['title', 'price']);
            }])
            ->whereHas('specs', function ($query) use ($params){
                // price_from,price_end对应价格区间, 可选参数
                if (isset($params['price_from']) && isset($params['price_end'])){
                    $query->whereBetween('price', [$params['price_from'], $params['price_end']]);
                }
            })->select('title')->get();
    
    展开全文
  • 今天小编就为大家分享一篇在laravel中使用with实现动态添加where条件,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 这种写法不正确,‘notice_cad’ function里面有带条件whereIn,外面要加一层whereHas $data = ProofingNotice::with(['notice_cad' => function ($qn) { $qn->with(['user_name'])->whereIn('flag', [4])...

    这种写法不正确,‘notice_cad’ function里面有带条件whereIn,外面要加一层whereHas

               $data = ProofingNotice::with(['notice_cad' => function ($qn) {
                    $qn->with(['user_name'])->whereIn('flag', [4]);
                }, 'exploit' => function ($qs) {
                    $qs->with(['client', 'brand', 'devedep', 'deveaids', 'client_branch']);
                }, 'notice_cad_review', 'colors'])
                    ->whereIn('status', $arr_status)
                    ->whereIn('area_id', $place_from)
                    ->whereBetween('review_date', [$start_date, $end_date])
                    ->get()->toArray();
    

    上面的写法应改为:

    $data = ProofingNotice::with(['notice_cad'=>function($w){
                    $w->with(['user_name'])->whereIn('flag', [4]);
                }, 'exploit', 'colors','notice_cad_review'])
                    ->whereHas('notice_cad', function ($qn) {
                        $qn->with(['user_name'])->whereIn('flag', [4]);
                    })
                    ->whereHas('exploit', function ($qs) {
                        $qs->with(['client', 'brand', 'devedep', 'deveaids', 'client_branch']);
                    })
                    ->whereIn('status', $arr_status)
                    ->whereIn('area_id', $place_from)
                    ->where(function ($qd) use ($start_date, $end_date) {
                        $qd->whereBetween('nuclear_date', [$start_date, $end_date]);
                        $qd->orwhereBetween('transport_date', [$start_date, $end_date]);
                    })->get()->toArray();
    

    别问为什么,不知道

    一、
                $data = ProofingNotice::with(['notice_cad'=>function($w){
                    $w->with(['user_name'])->whereIn('flag', [12])->where(['state'=>0]);
                }, 'exploit', 'colors','notice_cad_review'])
                ->whereHas('notice_cad', function ($qn) {
                    $qn->with(['user_name'])->whereIn('flag', [12])->where(['state'=>0]);
                })
                ->whereHas('exploit', function ($qs) {
                    $qs->with(['client', 'brand', 'devedep', 'deveaids', 'client_branch']);
                })
                ->whereIn('status', $arr_status)
                ->whereIn('area_id', $place_from)
                ->where('properties_id','<>',15) //15局部样
                ->where(function ($qd) use ($start_date, $end_date) {
                    $qd->whereBetween('review_date', [$start_date, $end_date]);
                })->get()->toArray();
    
    二、
               $data = ProofingNotice::with(['notice_size',
                        'exploit'=>function($qe) use($depid,$client_id,$brand_id,$deve_aid){
                            if (isset($depid)){
                                $qe->with(['client','brand','devedep','deveaids','client_branch'])
                                   ->whereIn('deve_dep',$depid);
                            }
                            if (isset($client_id)){
                                $qe->with(['client','brand','devedep','deveaids','client_branch'])
                                    ->where('client_id',$client_id);
                            }
                            if (isset($brand_id)){
                                $qe->with(['client','brand','devedep','deveaids','client_branch'])
                                    ->where('brand_id',$brand_id);
                            }
                            if (isset($deve_aid)){
                                $qe->with(['client','brand','devedep','deveaids','client_branch'])
                                    ->where('deve_aid',$deve_aid);
                            }
                            if( !isset($depid) && !isset($client_id) && !isset($brand_id)  && !isset($deve_aid) ) {
                                $qe->with(['client','brand','devedep','deveaids','client_branch']);
                            }
                        },
                        'colors'=>function($qc) use($place_id){
                            if (isset($place_id)) {
                                $qc->where(['place_id' => $place_id]);
                            }
                        }
                    ])
                    ->whereHas('exploit', function ($qe) use($depid,$client_id,$brand_id,$deve_aid) {
                        if (isset($depid)){
                            $qe->with(['client','brand','devedep','deveaids','client_branch'])
                               ->whereIn('deve_dep',$depid);
                        }
                        if (isset($client_id)){
                            $qe->with(['client','brand','devedep','deveaids','client_branch'])
                                ->where('client_id',$client_id);
                        }
                        if (isset($brand_id)){
                            $qe->with(['client','brand','devedep','deveaids','client_branch'])
                                ->where('brand_id',$brand_id);
                        }
                        if (isset($deve_aid)){
                            $qe->with(['client','brand','devedep','deveaids','client_branch'])
                                ->where('deve_aid',$deve_aid);
                        }
                        if( !isset($depid) && !isset($client_id) && !isset($brand_id)  && !isset($deve_aid)) {
                            $qe->with(['client','brand','devedep','deveaids','client_branch']);
                        }
                    })
                    ->whereHas('colors',function ($qc) use($place_id){
                        if (isset($place_id)) {
                            $qc->where(['place_id' => $place_id]);
                        }
                    })
                    ->whereIn('status',$arr_status)
                    ->whereIn('area_id',$place_from)
                    ->whereIn('properties_id',$arr_properties)
                    ->where(function ($qd) use($start_date,$end_date){
                        $qd->whereBetween('nuclear_date', [$start_date, $end_date]);
                        $qd->orwhereBetween('transport_date', [$start_date, $end_date]);
                    })
                    ->get()->toArray();
    
    展开全文
  • laravel框架查询条件

    2021-05-14 18:44:19
    laravel框架查询条件laravel框架多个字段like 模糊搜索内容laravel框架使用 or 查询 laravel框架多个字段like 模糊搜索内容 $name = $request['name']; $data = (new UserTalkService())->_query()->where($...

    laravel框架多个字段like 模糊搜索内容

    	$name = $request['name'];
    	$data = (new UserTalkService())->_query()->where($where)->where(function($query) use ($name){
        if($name){
    	       $query->where('phone','like','%' . $name . '%')->orWhere('name','like','%' . $name . '%');
    	     }
     	 })->with(['user'])->page(true);
    	或者
    	$data = (new UserTalkService())->_query()->where($where)->whereRaw("concat(`phone`,`name`) like '%".$name."%'")->with(['user'])->page(true);
    

    laravel框架使用 or 查询

    $data = $this->service->_query()->where(function($query) use ($where,$label){
            $query->where($where);
            if ($label) $query->whereRaw('FIND_IN_SET(?,label)', [$label]);
        })->orWhere(function($query) use ($map,$label){
            $query->where($map);
            if ($label) $query->whereRaw('FIND_IN_SET(?,label)', [$label]);
        })->page(true);
    
    展开全文
  • 需求,查询文章列表,以及文章列表下的评论。但是每篇文章评论只需要查询出2条即可(一篇文章可能有几百个评论)。 2.实现 配置关联模型 //---------------------Article模型的关联表配置如下----------------------...
  • laravelwith关联查询限定查询字段

    千次阅读 2021-03-09 15:59:53
    闭包内select指定字段 ActiveJieSuan::with(['user' => function ($query) {$query->select('id','name');}, 'active'=> function ($query) { $query->select('id','name','start'); } ]) ->paginate()->toArray();...
  • Laravel关联模型查询设置查询条件与指定字段 模型设置 用户模型去关联用户token模型 2.控制器调用 注意select()里面一定是数组,不能是select(“id,status,user_id”) 3.打印结果如下
  • 关键点:闭包 模型: public function getCollect() ... return $this->belongsTo...注意:with可以连多个表(数组形式传参),没有动态条件的,可以直接讲模型方法名写到with的参数中,有动态条件的,写到闭包中
  • laravelwith关联表查询实现搜索

    千次阅读 2020-09-24 09:49:12
    } 2 控制器 实现两表联合查询,从 userdetail 中读取出 username 值 $data = SystemBonusUserLog::with(['UserDetail' => function($query){ $query->select(['username','userid']); }]) ->whereHas('UserDetail'...
  • DB::table('users') ->where(function ($q) { //闭包返回的条件会包含在括号中 return $q->where('id', 3) ->orWhere([ ['name', 'jay'], ['age', '>', '18'] ]); }) ->where('sex', 1) ->get(); sql语句: select *...
  • $userCoupons = UserCoupons::with(['coupon' => function($query) use($groupId){ return $query->select('id', 'group_id', 'cover', 'group_number', 'group_cover')->where([ 'group_id' => $groupId, ]); }]...
  • laravel闭包查询格式: function ($query,$param1,$param2,...) { $query->where('column1', '=', $param1) ->where('column2', '=', $param2); } 通过一个 闭包函数 写入 条件 方法构建一个查询构造器 来...
  • laravel条件查询详解

    万次阅读 2017-06-28 18:09:44
    有人问我 ‘ laravel 的where 如何改进使其适应多条件? 感觉laravel的where语句好弱’。其实那并不是这样的,原因是laravel中数据库where查询的玩法和其他框架如ThinkPHP有所不同,下面我就用一个实例来说明吧,...
  • laravel中的关联查询with问题

    万次阅读 2017-11-16 16:09:44
    laravel中的关联查询with问题
  • laravel 模型查询总结

    2021-11-10 16:42:39
    laravel 模型查询总结 Model::find(id);//查找主键为id);//查找主键为id);//查找主键为id的数据 Model::find([key1,key1,key1,key2]);//使用双主键进行查找 Model::findOrFail(id);//查找主键为id);//查找主键为id);...
  • laravel 一对一 一对多 with 关联查询

    千次阅读 2019-03-17 16:49:48
    注意:跨库关联查询必须用with 一对一参考文档https://www.kancloud.cn/baidu/laravel5/2948 定义一对一关联 一对一关联是很基本的关联。例如一个退换货申请单 =》 OrderMainReturnApplyModel模型会对应到一个 ...
  • 一. 一对一关系 hasOne 通过外键关联 goods_order表和goods_order_status表 ...使用with查询某个订单号及其的状态 GoodsOrder::where($where) ->select('uid','userinfo_id','platform_type','order_id','accou...
  • 而join语句中可传入匿名函数重新构造,如再其中加多几个连接条件,或者查询条件 $con = DB::table('xx_snapshot') ->join('xx_snapshot as gg', function ($query) { $query->on('gg.game_count', '=', 'xx_...
  • 直接上代码 public function index(Request $request) { //$word为关联表要查询的字段内容 $word=$request->... //重点啊来了这里如果使用with查询只能过滤要查询的内容也就是说值是死的不能用活值 //
  • Laravel 中使用子查询

    2022-08-02 17:22:33
    Laravel 中使用子查询
  • 因为“渴求式加载”缓解了1+N的查询问题,仅需1+1次查询就能解决问题,对查询速度有了质的提升。 $where=[ ['aaa','=','Y'], ['bbb','=','Y'], ]; $select=['dd','dfsd']; $info=A::with
  • 根据传入过来的key,也就是要搜索的关键词或者字段或状态,通过闭包查询,像状态,性别,之类的唯一固定值,可以写在闭包的后面,像搜索昵称,课程等模糊搜索,可以放在闭包里面。记得用orwhere,相当于原生sql的or...
  • <p>So, say I want to get all products along with the highest priced bidding I did something like this. <pre><code>$productBidding = DB::table('biddings') ->select('*', DB::raw('max(price) as ...
  • 查询班级下面所有符合条件的学生: 表结构: 班级表: 学生表: 1、长写错误SQL:select c.,s. from class c left join student s on c.id = s.class_id where c.deleted = 0 and s.deleted =0 返回结果: 2、正确的...
  • 预加载 关联模型 和 TP 一样 都是用with model 关联定义 大同小异 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Book extends Model { /** * 获取书籍作者。 */ public ...
  • 网上找到的大部分都是这么说的 //声明关系 public function post() { return $this->... $user4 = User::with(['post' => function($query) { $query->select(['id','status','user_id']); $quer

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,519
精华内容 607
关键字:

laravel with 查询条件