Codeigniter选择关系

问题描述 投票:0回答:1

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

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

data3包含以下列:

  • ID
  • RELID
  • reltype

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

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

模型:

 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 } ?>
php codeigniter
1个回答
0
投票

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

$this->db->select('*')
        ->from('data3')
        ->join('data1', 'data3.partid = data1.id', 'left')
        ->where('data3.relid', 6)
        ->get()->result_array();
© www.soinside.com 2019 - 2024. All rights reserved.