【问题标题】:Mysql query to get result with conditionMysql查询以获取有条件的结果
【发布时间】:2016-09-18 03:07:52
【问题描述】:

您好,我该如何进行查询。如果用户已登录,即使未发布,也可以获取所有评论,以便登录用户可以编辑或删除此评论,并且所有其他已发布评论应按 ID 按顺序显示。

我正在使用 CodeIgniter 活动记录。查询如下,其中publish = 1 可见,publish = 0 不可见。

 $this->db->select('user.name,user.image,product_review.*')->join('user', 'user.user_id = product_review.user_id');
 if ($this->session->userdata("is_logged_in")) {
        $this->db->where('product_review.user_id', $this->session->userdata("user_id"));
        $this->db->where('publish', '0');
 }
 $this->db->where('publish', '1');
 $this->db->where('product_id', $product_id);
 $this->db->order_by('review_id', "DESC");
 $query = $this->db->get("product_review");

但是通过这个查询,我无法得到任何结果。

【问题讨论】:

    标签: mysql codeigniter activerecord


    【解决方案1】:

    根据您的要求,您必须使用or 条件

    试试这个查询

    $this->db->select('user.name, user.image, product_review.*');
    $this->db->from('product_review');
    $this->db->join('user', 'user.user_id = product_review.user_id');
    if ($this->session->userdata("is_logged_in")) {
        $user_id = $this->session->userdata("user_id");
        $this->db->where("(product_review.user_id = $user_id or product_review.publish = 1)");
    } else {
        $this->db->where('product_review.publish', '1');
    }
    $this->db->where('product_review.product_id', $product_id);
    $this->db->order_by('product_review.review_id', "DESC");
    $result = $this->db->get()->result();
    

    click there 用于演示

    【讨论】:

    • 这不是要求。即使发布为 0 并且用户已登录,我也希望获得所有评论,即即使未发布或发布 = 0,也只有登录用户的评论。但所有其他发布 = 1 评论也是如此。跨度>
    • 您希望对登录用户发布 0 或 1 以及发布 1 的用户进行评论正确吗?如果是这样,此代码$this->db->where("(product_review.user_id = $user_id or product_review.publish = 1)"); 正在检查 product_review.user_id 是否属于当前登录用户,如果评论不是当前用户,则 product_review.publish = 1 用于其他用户的评论。请检查其or 条件。试试这个代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2015-04-24
    • 2019-06-14
    • 2017-04-25
    相关资源
    最近更新 更多