【发布时间】:2020-07-31 16:40:23
【问题描述】:
我有 1 个数据库,里面可能有 3 个表,用户、user_profile、user_stats。我想问一下是否可以将这 3 个表放在 1 个模型文件中?如果用户要访问用户 A 的个人资料,它将显示这 3 个表中的所有用户 A 记录。我在任何地方都找不到它是否可以在 CI4 中找到。希望这里有人可以指导我。提前谢谢各位!
【问题讨论】:
标签: codeigniter-4
我有 1 个数据库,里面可能有 3 个表,用户、user_profile、user_stats。我想问一下是否可以将这 3 个表放在 1 个模型文件中?如果用户要访问用户 A 的个人资料,它将显示这 3 个表中的所有用户 A 记录。我在任何地方都找不到它是否可以在 CI4 中找到。希望这里有人可以指导我。提前谢谢各位!
【问题讨论】:
标签: codeigniter-4
您需要重写 find 方法。我已经为 findAll 做了,还没有尝试过 find 方法。因此,您可能需要即兴创作以下逻辑。根据我们获取行的条件,在三个地方,一个检查数组,另一个检查单行,最后一个是默认的。所以你需要修改这个行为。
替换: $row = $builder
使用您的自定义构建器查询,如下所示:
$row = $builder->select("users.*");
$builder->join('user_profile', 'user_profile.id = users.id','inner');
$builder->join('user_stats', 'user_stats.id = users.id','inner');
->whereIn($this->table . '.' . $this->primaryKey, $id)
->get();
您需要根据 find 方法中的条件替换最后一个查询,并且不要明确提及用户,您应该使用 $this->table 和类似的主键而不是 id,您应该使用 $this->主键。
【讨论】: