我要从codeigniter检索产品,其中有三个表:
加入dg_products
并且dg_rating
正常工作后,我想从dg_like
获得相同的状态。
dg_like
的结构是:
id | P_id | Uid
我可以从会话中检索当前登录的用户ID,但无法检索该用户是否喜欢该特定产品。请提出任何建议。
public function get_featured()
{
$this->db->select('dg_products.*, AVG(dg_rating.rating) As averageRating');
$this->db->from('dg_products');
$this->db->join('dg_rating', 'dg_products.id = dg_rating.product_id','left');
$user_info=$this->session->userdata('logged_in');
$user_id=$user_info['id'];
if($user_id != '') {
$this->db->join('dg_like', 'user_id = dg_like.u_id');
}
$this->db->where('dg_products.is_featured_prod','1');
$this->db->group_by("dg_products.id");
$query = $this->db->get();
$result = $query->result();
return $result;
}
答案 0 :(得分:0)
根据您提供的信息,您正在使用不存在的字段加入
如果dg_like的结构是
id | P_id | Uid
join语句应为
$this->db->join('dg_like', 'user_id = dg_like.Uid');
我会更进一步,建议您将其设置为LEFT JOIN
,这样查询的输出将包含所有行,无论是否喜欢:
$this->db->join('dg_like', 'user_id = dg_like.Uid', 'LEFT');
希望有效
答案 1 :(得分:0)
如果您检索当前已登录的用户记录,则根据表 dg_like 的结构ID | P_id | id在这里,$ user_id是登录用户ID。
$this->db->select('dg_products.*, AVG(dg_rating.rating) As averageRating');
$this->db->from('dg_products');
$this->db->join('dg_rating', 'dg_products.id = dg_rating.product_id','left');
if($user_id != '') {
$this->db->join('dg_like', 'dg_products.id = dg_like.P_id');
}
$this->db->where('dg_like.Uid',$user_id);
$this->db->where('dg_products.is_featured_prod','1');
$this->db->group_by("dg_products.id");
$query = $this->db->get();
$result = $query->result();
希望您的问题得到解决。