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显示MySQL数据的三种方法
Jun 05 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
PHP mkdir()定义和用法
Jan 14 PHP
php self,$this,const,static,->的使用
Oct 22 PHP
PHP多线程抓取网页实现代码
Jul 22 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 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分页集合包括使用方法
2013/10/21 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
Javascript事件实例详解
2013/11/06 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
React Router基础使用
2017/01/17 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
python可视化text()函数使用详解
2020/02/11 Python
基于Python实现简单学生管理系统
2020/07/24 Python
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
七年级地理教学反思
2014/01/26 职场文书
新学期决心书
2014/03/11 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
推广普通话标语
2014/06/27 职场文书
师德师风剖析材料
2014/09/30 职场文书
基于Python实现将列表数据生成折线图
2022/03/23 Python
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
Python实现聚类K-means算法详解
2022/07/15 Python