laravel 实现根据字段不同值做不同查询
例如,一个信息表message,字段type1.操作提醒2.平台通知,表message_read记录当信息是平台通知时用户浏览状况
那么当信息是平台通知时是针对的所有用户,我们想根据他是否浏览状态去在消息提醒里去显示他未读的消息
语句如下(laravel)
publicfunctionindex() { //监听sql语句 //DB::listen(function($query){ //$bindings=$query->bindings; //$sql=$query->sql; //foreach($bindingsas$replace){ //$value=is_numeric($replace)?$replace:"'".$replace."'"; //$sql=preg_replace('/\?/',$value,$sql,1); //} //dd($sql); //}); $uid=13; returnMessageModel::where(function($query)use($uid){ $query->where(['type'=>2,'status'=>1,])->whereNotIn('id',function($query)use($uid){ $query->select('mid')->from('message_read')->where([['message.id','=',DB::raw('mid')],'uid'=>$uid]); }); })->orwhere(function($query)use($uid){ $query->where(['type'=>1,'status'=>1,'is_read'=>2,'uid'=>$uid]); })->get(); }
数据表格式
CREATETABLE`message`( `id`int(11)unsignedNOTNULLAUTO_INCREMENT, `uid`int(11)DEFAULTNULLCOMMENT'需要通知的用户id', `title`varchar(255)NOTNULLCOMMENT'标题', `describe`varchar(255)DEFAULTNULLCOMMENT'简介', `type`tinyint(4)DEFAULTNULLCOMMENT'通知类型1.行为通知2.平台通知', `is_read`tinyint(4)DEFAULTNULLCOMMENT'是否已读1.已读2.未读', `status`tinyint(4)DEFAULT'1'COMMENT'1存在2删除', `created_at`int(11)DEFAULTNULL, `updated_at`int(11)DEFAULTNULL, PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=6DEFAULTCHARSET=utf8mb4COMMENT='消息表'; CREATETABLE`message_read`( `id`int(11)unsignedNOTNULLAUTO_INCREMENT, `uid`int(11)DEFAULTNULLCOMMENT'用户id', `mid`int(11)DEFAULTNULLCOMMENT'消息id', `created_at`int(11)DEFAULTNULL, `updated_at`int(11)DEFAULTNULL, PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8mb4COMMENT='平台消息通知阅读记录表';
以上这篇laravel实现根据字段不同值做不同查询就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。