【发布时间】: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