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操作Access类(PHP+ODBC+Access)
Jan 02 PHP
PHP伪静态写法附代码
Jun 20 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
PHP字符转义相关函数小结(php下的转义字符串)
2007/04/12 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
PHP实现添加购物车功能
2017/03/06 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
python处理PHP数组文本文件实例
2014/09/18 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Python pymsql模块的使用
2020/09/07 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
十佳大学生事迹材料
2014/01/29 职场文书
锦旗标语大全
2014/06/23 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
社区好人好事材料
2014/12/26 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
V Rising 服务器搭建图文教程
2022/06/16 Servers