laravel 實現根據字段不同值做不同查詢

 更新時間:2019年10月23日 10:41:14   作者:侯蜀黍   我要評論
今天小編就為大家分享一篇laravel 實現根據字段不同值做不同查詢,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在開發過程中我們經常遇到這種情況:

例如,一個信息表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 實現根據字段不同值做不同查詢就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Codeigniter的dom類用法實例

    Codeigniter的dom類用法實例

    這篇文章主要介紹了Codeigniter的dom類用法,實例分析了基于Codeigniter的dom操作技巧,需要的朋友可以參考下
    2015-06-06
  • php實現微信掃碼自動登陸與注冊功能

    php實現微信掃碼自動登陸與注冊功能

    這篇文章主要介紹了php實現微信掃碼自動登陸與注冊功能,結合實例形式分析了php微信二維碼識別接口與相關使用技巧,需要的朋友可以參考下
    2016-09-09
  • 如何使用純PHP實現定時器任務(Timer)

    如何使用純PHP實現定時器任務(Timer)

    本文主要介紹了如何使用純PHP實現純粹的定時器任務,且能適應認識任務業務需求,需要的朋友可以參考下
    2015-07-07
  • PHP實現多關鍵字加亮功能

    PHP實現多關鍵字加亮功能

    關鍵字加亮可以更好的幫助閱讀,本篇文章主要PHP實現多關鍵字加亮功能,具有一定的參考價值,有需要的可以看一下。
    2016-10-10
  • PHP如何將log信息寫入服務器中的log文件

    PHP如何將log信息寫入服務器中的log文件

    這篇文章主要介紹了PHP如何將log信息寫入服務器中的log文件,需要的朋友可以參考下
    2015-07-07
  • PHP微信開發之查詢微信精選文章

    PHP微信開發之查詢微信精選文章

    這篇文章主要為大家詳細介紹了PHP微信開發之簡單實現查詢微信精選文章的相關資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • php+redis實現多臺服務器內網存儲session并讀取示例

    php+redis實現多臺服務器內網存儲session并讀取示例

    這篇文章主要介紹了php+redis實現多臺服務器內網存儲session并讀取示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • PHP遞歸刪除目錄幾個代碼實例

    PHP遞歸刪除目錄幾個代碼實例

    刪除一個空目錄用rmdir() 函數即可搞定。但是要刪除一個非空目錄,則無法進行快速的刪除,必須先將目錄中文件刪除,但是目錄里可能還會有子目錄,因此我們需要進行遞歸刪除
    2014-04-04
  • Yii2結合Workerman的websocket示例詳解

    Yii2結合Workerman的websocket示例詳解

    這篇文章主要給大家介紹了關于Yii2結合Workerman的websocket的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2018-09-09
  • 為百度UE編輯器上傳圖片添加水印功能

    為百度UE編輯器上傳圖片添加水印功能

    前些日子把phpcms的內置編輯器改成了百度UE編輯器,非常好用,但是有個地方不是很滿意,就是沒法給上傳的圖片加水印了,經過一番研究終于實現了出來,分享給大家。
    2015-04-04

最新評論

2019开奖结果