MVC:查询相关表的最佳方式

时间:2011-06-14 18:49:13

标签: php model-view-controller

我一直在编写程序代码很长一段时间,最近我一直在学习MVC。我尝试了几个框架,并决定从头开始编写我自己的内部和外部。到目前为止,我有一个工作的MVC框架(它工作得很好!)但我正在尝试确定查询相关表的最佳方法。

截至目前,在我的member模型中,我使用以下内容获取成员列表及其rank_name

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 hasOne rank(或rank有多少member?)

我想到的唯一选择是在members模型中单独查询member表,然后调用rank模型中的方法来获取每个{0}}模型的等级名称行,像这样:

// 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的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

也许你正在寻找一个ORM(对象关系映射器)。 ORM可以帮助您从数据库中存储和检索模式对象。

对于PHP,我猜你最好的选择是Doctrine