我一直在编写程序代码很长一段时间,最近我一直在学习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的最佳做法是什么?