【问题标题】:Codeigniter 4 multiple database tables in 1 model fileCodeigniter 1 个模型文件中的 4 个多个数据库表
【发布时间】:2020-07-31 16:40:23
【问题描述】:

我有 1 个数据库,里面可能有 3 个表,用户、user_profile、user_stats。我想问一下是否可以将这 3 个表放在 1 个模型文件中?如果用户要访问用户 A 的个人资料,它将显示这 3 个表中的所有用户 A 记录。我在任何地方都找不到它是否可以在 CI4 中找到。希望这里有人可以指导我。提前谢谢各位!

【问题讨论】:

    标签: codeigniter-4


    【解决方案1】:

    您需要重写 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->主键。

    【讨论】:

    • 感谢您的帮助。很抱歉问了愚蠢的问题,我还是 CI4 的新手。因此,您显示的查询将在模型文件中,对吗?
    • 是的,您要扩展到的模型。例如,如果您有扩展 Model 的 UserModel,您只需更改该文件中的 find 方法。
    • 我会试试的!谢谢!
    猜你喜欢
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2014-09-17
    • 2015-11-24
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多