【问题标题】:Codeigniter select relationCodeigniter 选择关系
【发布时间】:2018-08-09 19:48:37
【问题描述】:

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

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

data3 有这些列:

  • 身份证
  • 可靠
  • 重新输入
  • partid

解释:当我选择一个 id 为 6 的产品时,我必须选择每一个 relid 为 6 的项目并显示 data1 中的所有部分(列 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 } ?>

【问题讨论】:

  • 1个数据库3个表,对吧?还是 3 个数据库 1 个表?
  • 是的,1个数据库和3个表
  • 所以用户有商店和商店有产品或用户有产品和产品有商店?
  • 你能提供你的表格定义吗?
  • 我的理解是你有三个表Parts(data1),Products(data2),Relationship(data3) 。如果您选择data3.relid = 6,您需要显示所有与该relid 相关的data1.id。对吗?

标签: php codeigniter


【解决方案1】:

我认为这应该可以通过一个简单的左连接查询来实现,试试这个。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2011-09-24
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多