laravel 필드 의 값 에 따라 서로 다른 조 회 를 실현 합 니 다.

개발 과정 에서 우 리 는 이런 상황 을 자주 만난다.
예 를 들 어 하나의 정보 표 message,필드 type 1.조작 알림 2.플랫폼 알림,표 messageread 기록 정보 가 플랫폼 알림 일 때 사용자 조회 상황
그러면 정보 가 플랫폼 알림 일 때 모든 사용 자 를 대상 으로 합 니 다.저 희 는 그 가 조회 하 는 상태 에 따라 메시지 알림 에 읽 지 않 은 메 시 지 를 표시 하고 싶 습 니 다.
문장 은 다음 과 같다(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 은 필드 의 서로 다른 값 에 따라 서로 다른 조 회 를 하 는 것 이 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기