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自动选择 连接本地还是远程数据库
Dec 02 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
PHP生成sitemap.xml地图函数
Nov 13 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 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
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php简单压缩css样式示例
2016/09/22 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
vue filters的使用详解
2018/06/11 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python中zfill()方法的使用教程
2015/05/20 Python
Python中的with...as用法介绍
2015/05/28 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
navabi英国:设计师大码女装
2019/06/25 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
机关保密承诺书
2014/06/03 职场文书
迎国庆演讲稿
2014/09/05 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
产品质量保证书范本
2015/02/27 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python