Codeigniter选择关系

时间:2018-03-01 16:53:47

标签: php codeigniter

我有三个数据库表:例如data1,data2,data3。 Data1是部件表,data2是产品表,data3是关系表。

用户可以从data1中选择多个部件,以在data2中创建产品组合。这些组合存储在data3中。

data3包含以下列:

  • ID
  • RELID
  • reltype
  • PARTID

有关说明:当我选择ID为6的产品时,我必须选择每个带有relid 6的项目并显示data1(column partid)中的所有部分。

我写了一些代码,但我被困了:

MODEL:

 public function example()
{
    $this->db->select('relid');
    $this->db->from('data3');
    $sub_query = $this->db->get_compiled_select();

    $this->db->select('*');
    $this->db->from('data2');
    $this->db->where("id IN ($sub_query)" AND ("reltype=1") );
    return $this->db->get()->result();
}

有人可以帮我检查模型和正确的控制器代码吗?

修改

我在尝试这个建议时遇到错误:

$this->db->select('*')
->from('data3')
->join('data1', 'data3.partid = data1.id', 'left')
->where('data3.relid', 6)
->get()->result_array();

消息:在null

上调用成员函数result()

控制器中的代码:

$data['parts'] = $this->example_model->example();

视野中的代码:

<?php foreach($parts->result() as $part) { ?>
<div class="parts">
<?php echo $part->id; ?>
</div>
<?php } ?>

1 个答案:

答案 0 :(得分:0)

我认为这应该是一个简单的左连接查询,尝试一下。

$this->db->select('*')
        ->from('data3')
        ->join('data1', 'data3.partid = data1.id', 'left')
        ->where('data3.relid', 6)
        ->get()->result_array();