where('room_no', $value); } public function searchUserIdAttribute($query, $value, array $params): mixed { if (empty($value)) { return $query; } return $query->where('user_id', $value); } public function searchKeywordAttribute($query, $value, array $params): mixed { if (empty($value)) { return $query; } return $query->withWhereHas('user',function ($query) use($value) { $query->where('nickname','like',"%{$value}%"); }); } /** * 关注直播间 * @param int $user_id * @param int $room_id * @param string $room_no * @param string $session * @return bool */ public function follow(int $user_id,int $room_id,string $room_no,string $session): bool { if (!$info = $this->query()->where(['user_id'=>$user_id,'room_id'=>$room_id,'room_no'=>$room_no])->first()){ $log = [ 'user_id' => $user_id, 'room_id' => $room_id, 'room_no' => $room_no, 'session' => $session, 'status' => 1, 'create_time' => time(), ]; if (!$this->query()->insertGetId($log)) { return $this->error('关注失败'); } }else{ if ($info->status == 1){ return $this->error('已关注过了'); } if (!$this->query()->where('id',$info->id)->update(['status'=>1,'session'=>$session,'create_time'=>time()])){ return $this->error('关注失败了'); } } return $this->success('关注成功'); } /** * 取消关注 * @param int $user_id * @param int $room_id * @param string $room_no * @return bool */ public function cancelFollow(int $user_id,int $room_id,string $room_no) { if (!$info = $this->query()->where(['user_id'=>$user_id,'room_id'=>$room_id,'room_no'=>$room_no])->first()){ return $this->error('您未关注过'); }else{ if ($info->status != 1){ return $this->error('已取消关注'); } if (!$this->query()->where('id',$info->id)->update(['status'=>0])){ return $this->error('操作失败'); } } return $this->success('取关成功'); } // 开播日志 public function log() { return $this->hasOne(LiveRoomLogModel::class, 'session', 'session'); } // 用户信息 public function user() { return $this->hasOne(UserModel::class, 'id', 'user_id'); } }