【问题标题】:Best way to query in CodeIgniter在 CodeIgniter 中查询的最佳方式
【发布时间】:2019-11-25 17:37:45
【问题描述】:

我试图寻找这个问题的答案,但我有一个关于使用 codeigniter 过滤的问题。下面的代码检查管理员是否登录显示查询中的每个想法(大脑)状态,可以是公开的或隐藏的,否则只显示具有公开状态的。

我想更改此设置以继续向所有人显示具有公开状态的想法,并且仅向已登录的人显示具有隐藏状态的想法。

if($this->ion_auth->is_admin()) {
    $brain_status = null;
}
else {
    $brain_status = $brain::PUBLIC_STATUS;
}

$brain_collection = $this->em->getRepository('Entities\Brain')
                             ->getListPerPage($brain::BRAIN_PER_PAGE, $page, $brain_status);

我尝试使用 $this->session->user_id,我不知道还有多少其他语法,我无法让它发挥作用,每个想法在数据库中都有一个字段,当创建想法以完成此操作时会记录 user_id。

非常感谢任何帮助

【问题讨论】:

  • 您的数据库是否有一个“已发布”字段,与每个想法相关联?如果是这样,您可以向所有人显示所有已发布=1,而仅向其 user_id 匹配的那些已发布=0 显示
  • @Vickel 它没有!但我可以添加它。创建该字段后我将如何做?非常感谢
  • 正如我之前在评论中所说,如果用户已登录(您使用他的用户 ID 设置会话)并且此用户 ID 与 ideia 的用户 ID 匹配,则显示它。它的优点是您可以实现让用户能够发布或取消发布想法
  • @Vickel 工作就像一个魅力。谢谢

标签: php codeigniter filter


【解决方案1】:

为了完成这对 Q/A,我将我的 cmets 转换为答案:

要求:

管理员查看所有想法:公开的和隐藏的,普通用户只能看到公开的想法

解决办法:

创建一个数据库列“已发布”,与每个idea(以及相应的 user_id)相关联。现在,您可以在视图中显示与 published=1 匹配的所有记录给所有人,以及仅与 user_id 匹配的人(或管理员)显示published=0

如果用户已登录(您使用他们的 user_id 设置会话)并且此 user_id 与 idea 的 user_id 匹配,则显示它。它的优点是您可以实现让用户能够发布或取消发布他们自己的idea,无需管理员干预,只有自己可以查看,除非由管理员发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2013-08-22
    • 1970-01-01
    • 2015-10-07
    相关资源
    最近更新 更多