laravel 实现根据字段不同值做不同查询


Posted in PHP onOctober 23, 2019

在开发过程中我们经常遇到这种情况:

例如,一个信息表message,字段type 1.操作提醒 2.平台通知,表message_read记录当信息是平台通知时用户浏览状况

那么 当信息是平台通知时是针对的所有用户,我们想根据他是否浏览状态去在消息提醒里去显示他未读的消息

语句如下(laravel)

public function index()
 {
//  监听sql语句
//  DB::listen(function($query) {
//   $bindings = $query->bindings;
//   $sql = $query->sql;
//   foreach ($bindings as $replace){
//    $value = is_numeric($replace) ? $replace : "'".$replace."'";
//    $sql = preg_replace('/\?/', $value, $sql, 1);
//   }
//   dd($sql);
//  });
   $uid = 13; 
   return MessageModel::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();
 }

数据表格式

CREATE TABLE `message` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `uid` int(11) DEFAULT NULL COMMENT '需要通知的用户id',
 `title` varchar(255) NOT NULL COMMENT '标题',
 `describe` varchar(255) DEFAULT NULL COMMENT '简介',
 `type` tinyint(4) DEFAULT NULL COMMENT '通知类型 1.行为通知 2.平台通知',
 `is_read` tinyint(4) DEFAULT NULL COMMENT '是否已读 1.已读 2.未读',
 `status` tinyint(4) DEFAULT '1' COMMENT '1存在 2删除',
 `created_at` int(11) DEFAULT NULL,
 `updated_at` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='消息表';


CREATE TABLE `message_read` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `uid` int(11) DEFAULT NULL COMMENT '用户id',
 `mid` int(11) DEFAULT NULL COMMENT '消息id',
 `created_at` int(11) DEFAULT NULL,
 `updated_at` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='平台消息通知阅读记录表';

以上这篇laravel 实现根据字段不同值做不同查询就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
php验证是否是md5编码的简单代码
Apr 01 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
php进行ip地址掩码运算处理的方法
Jul 11 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
PHP数字金额转换成中文大写显示
Jan 05 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
php 命名空间(namespace)原理与用法实例小结
Nov 13 PHP
Laravel修改验证提示信息为中文的示例
Oct 23 #PHP
php装饰者模式简单应用案例分析
Oct 23 #PHP
laravel 数据验证规则详解
Oct 23 #PHP
php适配器模式简单应用示例
Oct 23 #PHP
Laravel 自定命令以及生成文件的例子
Oct 23 #PHP
laravel 创建命令行命令的图文教程
Oct 23 #PHP
php桥接模式应用案例分析
Oct 23 #PHP
You might like
用cookies来跟踪识别用户
2006/10/09 PHP
实用函数3
2007/11/08 PHP
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
2012/03/01 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
js数组去重的hash方法
2016/12/22 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现括号匹配的思路详解
2018/08/23 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
在C#中如何实现多态
2014/07/02 面试题
国家助学金获奖感言
2014/01/31 职场文书
《自选商场》教学反思
2014/02/14 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
临床医学专业求职信
2014/08/08 职场文书
会计岗位职责
2015/02/03 职场文书
毕业论文致谢范文
2015/05/14 职场文书
小学教师教学随笔
2015/08/14 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS