【发布时间】:2021-09-08 17:28:34
【问题描述】:
我有两张表,一张有两个外键,另一张有 id 和对应的主题。我想在我的控制器中创建一个函数,它返回一个包含表 1 中所有数据的数组,除了应该用另一个表中的实际主题替换的主题 ID。
我目前遇到的问题是我在数组中加入了具有相同元素名称的两个主题,导致其中一个覆盖了另一个。我怎样才能使它们都不同,或者它们只是覆盖数组中的 id 。我希望这是有道理的,如果没有,请在 cmets 中要求澄清。
我的两张桌子
表 1:(klasgenoten)
| naam | verplicht_profielvak1 | verplicht_profielvak2 | etc.. |
|---|---|---|---|
| john | 1 | 2 |
表 2:(verplicht_profielvakken)
| id | profielvak |
|---|---|
| 1 | math |
| 2 | science |
我的加入代码:
$builder = $db->table('klasgenoten'); // welke table gaat het over
$builder->join('verplicht_profielvakken', 'klasgenoten.verplicht_profielvak1 = verplicht_profielvakken.id');
$builder->select('klasgenoten.*, verplicht_profielvakken.profielvak');
$query = $builder->get();
$verplicht_profielvak1 = $query->getResultArray();
这将返回一个包含元素 verplicht_profielvak1 和 profielvak 的数组。这样做的问题是,如果我想加入多个主题,它们会相互覆盖。示例:
在这种情况下,上表中的 John 将只有科学,因为它覆盖了数学。
我尝试过的:
不同类型的连接,手动替换值的 foreach 循环,重新排列我的代码,尝试了别名但效果不佳,查看了几个 stackoverflow 问题,我发现所有这些问题都不适用于我的情况。
有人知道怎么做吗?
【问题讨论】:
标签: php database join foreign-keys codeigniter-4