Mysql查询获取带条件的结果

时间:2016-09-18 03:07:53

标签: mysql codeigniter activerecord

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

我正在使用CodeIgniter活动记录。查询如下,其中发布= 1,可以看到并且看不到发布= 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");

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

1 个答案:

答案 0 :(得分: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用于演示