如何使用join从codeigniter中的多个表中选择所有列?

时间:2017-06-07 14:51:46

标签: codeigniter join mysqli

我有4个这样的表格: Database structure

现在,我想从model.featured=1的所有表中选择所有列。即。

model.id
model.name
model_attributes.id
model_attributes.attributes_value
model_images.id
model_images.model_images
attributes.id
attributes.name
attributes.value

我只能进行基本级别的查询,而且我不确定我是否接近解决方案,但这是我尝试过的(不返回任何内容):

$this->db->select('*');
$this->db->from('model');
$this->db->join('model_images','model.id = model_images.model_id','RIGHT');
$this->db->join('model_attributes','model.id = model_attributes.model_id','RIGHT');
$this->db->join('attributes','model_attributes.attributes_id = attributes.id','RIGHT');
$this->db->where('model.featured', 1);
$query = $this->db->get();
return $query->result();

我如何实现我想要的目标?或者,还有其他更好的方法吗?

3 个答案:

答案 0 :(得分:0)

//尝试此查询

$this->db->select('*');
$this->db->from('model');
$this->db->join('model_images','model_images.model_id = model.id');
$this->db->join('model_attributes','model_attributes.model_id = model.id');
$this->db->join('attributes','attributes.id = model_attributes.attributes_id');
$this->db->where('model.featured','1');
$query = $this->db->get()->result();
return $query;

答案 1 :(得分:0)

请通过以下解决方案。

$this->db->select('model.*,model_images.*,model_attributtes.*, attributes.*'):

如果它不适合你,请告诉我。

答案 2 :(得分:0)

请通过以下解决方案。如果多个表具有相同的列名,则必须为表中的每个具有相同名称的列名提供别名。因为默认情况下CI合并所有列名并生成结果。

$this->db->select('*,c.name as c_name,s.name as s_name');
$this->db->from('country c');
$this->db->join('state s', 'c.id = s.country_id');
$query = $this->db->get();