问题描述
我的数据库中有 4 个表:
表 project_ppi:
- id(主键)
表 scopus_author:
表author_subject_area:
表 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 中每个表都有一个模型,但我真的不知道从哪里开始。
谁能给个提示?
提前致谢!
解决方法
简而言之
已经有一些指南可以帮助您,并说明您使用的是普通 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 个表 user,post