You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关联查询带WHERE子句无法获取记录:仅需展示登录用户数据

如何筛选当前登录用户的帖子记录

看起来你需要在现有查询基础上,加上条件只返回当前登录用户的帖子,其实核心就是利用Session保存的登录用户ID,给查询加个WHERE子句过滤数据就行。

步骤1:确保登录时已存储用户ID到Session

首先得确认用户登录成功后,你已经把他的ID存入了Session,比如登录验证逻辑里应该有类似这样的代码:

// 假设从users表查到登录用户的ID为$user_id
$this->session->set_userdata('user_id', $user_id);

要是你的Session键名不是user_id,后面记得对应调整哦。

步骤2:修改get_posts方法添加筛选条件

把你原来的方法改成下面这样,补充WHERE子句限定当前用户的帖子:

public function get_posts(){
    // 从Session获取当前登录用户的ID
    $current_user_id = $this->session->userdata('user_id');

    $this->db->order_by('posts.id', 'DESC');
    // 补全categories表的关联语句,这里假设关联字段是categories.id和posts.category_id
    $this->db->join('categories', 'categories.id = posts.category_id');
    // 关键:添加条件,只查询当前用户发布的帖子
    $this->db->where('posts.user_id', $current_user_id);
    
    // 返回最终查询结果
    return $this->db->get('posts')->result();
}

关键说明

  • $this->session->userdata('user_id')是获取登录用户ID的核心,一定要和你登录时存入Session的键名保持一致。
  • $this->db->where('posts.user_id', $current_user_id)这条语句就是把查询范围锁定在当前用户的帖子上,因为posts表的user_id字段和users表的ID字段关联,刚好对应登录用户的ID。

这样修改后,你的查询就只会返回当前登录用户自己的帖子啦!

内容的提问来源于stack exchange,提问作者Harun Anwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:18:09