如何解决MVC:查询相关表的最佳方法
| 我已经对过程代码进行了一段时间的编程,最近我一直在学习MVC。我尝试了两个框架,并决定我想从头开始编写自己的框架,以内而外地学习它。到目前为止,我有一个可以正常工作的MVC框架(它很好用!),但是我正在尝试确定查询相关表的最佳方法。 截至目前,在我的member
模型中,我使用以下内容获取成员及其their1的列表
SELECT m.*,r.`name` AS rank_name
FROM `{$this->table}` AS m
LEFT JOIN `ranks` AS r
ON r.`id` = m.`rank_id`
这可以正常工作,但是似乎不像在MVC中那样。在使用cakephp之类的框架之后,我知道member
具有一个rank
(或者rank
具有许多member
?)
我想到的唯一替代方法是在member
模型中自行查询members
表,然后在rank
模型中调用方法以获取每一行的等级名称,如下所示:
// member model
SELECT *
FROM `{this->table}`
while($row = $result->fetch_assoc()) {
$data []= $row;
$data[\'rank_name\'] = $this->Rank->get_name($row[\'rank_id\']);
}
但这不是非常有效,必须为每个成员运行一个单独的查询。我想到的唯一另一个概念是使用MySQL的IN(x,y,z)
函数获取等级名称,然后以某种方式合并数组。
在MVC中,最佳做法是什么?
解决方法
也许您正在寻找ORM(对象关系映射器)。 ORM可以帮助您从数据库中存储和检索模型对象。
对于PHP,我猜您最好的选择是Doctrine。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。