【问题标题】:Join multiple tables in Yii2 framework在 Yii2 框架中加入多个表
【发布时间】:2021-03-29 09:09:35
【问题描述】:

我的数据库中有 4 个表:

表项目_ppi:

  • id(主键)

表 scopus_author:

  • id(主键),
  • project_ppi,-> 链接到表 project_ppi 中的 id
  • author_scopus_id

表 author_subject_area:

  • author_id (PRIMARY KEY) -> 链接到表 scopus_author 中的 id

表 project_author_match:

  • project_ppi (PRIMARY_KEY),
  • author_scopus_id(主键),
  • match_value

我需要做什么:

在实践中,给定一个项目(表 project_ppi),我需要显示链接到该项目的所有作者(表 scopus_author),并为每个作者显示他/她的工作领域(表 author_subject_area),但按 match_value 排序结果(表 project_author_match)。

我可以在“普通 SQL”语句中做到这一点,但我被困在 Yii2 框架中。 我的 php 中每个表都有一个模型,但我真的不知道从哪里开始。
谁能给我一个提示?

提前致谢!

【问题讨论】:

    标签: php join yii2 yii2-model


    【解决方案1】:

    总之

    已经有一些指南可以帮助您,并说明您使用的是普通的 SQL 数据库;像 MariaDB 或 MySQL 因此你应该使用 ActiveRecord 模型。更多细节在这里 (https://www.yiiframework.com/doc/guide/2.0/en/db-active-record)

    一些细节

    正如您应该做的那样,您有每个表的模型,然后在每个模型中添加一个最好称为“getSomething”的方法,它使用表之间的“hasOne”或“hasMany”关系,然后在您的Yii 查询您只需使用 joinWith('relationName') 方法即可进行查询。一个例子:

    $query = Post::find()->joinWith('user')->where(['user.id' => 1]);
    

    此查询将获取 ID 为 1 的用户撰写的所有帖子。假设一个简单的数据库有 2 个表用户,帖子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 2014-01-29
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      相关资源
      最近更新 更多