【发布时间】:2019-04-10 17:02:04
【问题描述】:
我不完全了解 MVC 模型的一件事是从模型中加载多个数据表。
假设我们有一个名为 user 的模型。
public class User{
protected $username;
protected $email;
protected $id;
public function setUsername($name, $id) {
$db->set->name($name)
$db->set->id($id)
}
public function getUsernameById($id) {
return $db->get->name($id);
}
据我所知,模型相当于数据库中的一行(称为用户)。
现在我写了两个函数。第一个用于设置用户名,另一个用于通过ID检索用户名。
假设您要检索所有用户。假设通过getAllUsers() 方法。此方法不适合模型,因为它不是单个对象。
现在我明白了,例如,您可以在控制器本身中调用此方法(函数)。但是在哪里可以定义这个方法(函数)呢?由于您不在模型上执行此操作。
如果我错了,我也喜欢听 :)
【问题讨论】:
-
您通常将它们实现为类方法。查看其他现有 ORM 的设计,例如 RedBeanPHP、Doctrine、Propel 和 Eloquent
-
您想实现类似 ORM 的解决方案 - 您的 models 会尝试镜像特定的数据库表结构和约束吗?或者您是否正在尝试构建能够在其方法中直接执行 sql 查询的对象(您的 模型)?
-
嘿达基斯。谢谢你的评论。我更关心创建 MVC 模型(并将其链接到 MySql 或其他数据库)背后的想法。当我去看 laravel 时,你已经雄辩地解决了你的大部分问题。太好了,假设您自己设置了一个 MVC 模型,因此了解其背后的逻辑很有用(我仍然有点卡住)。
-
不客气。对不起,但你的第二和第三个短语让我有点困惑,因为我不是以英语为母语的人。从他们那里,我了解到您想要实现一个“经典”模型层,而不是类似 ORM 并且根本不使用 ORM 库。就像我在之前评论的第二个问题中问的那样。我对吗? P.S.:通常,您必须在特定用户名前加上“@”字符(例如:@dakis),以便 SO 用户收到有关您的评论的通知。
-
@dakis 嗯,是的,我更喜欢它,因为我想更好地理解它背后的逻辑。当你看 laravel 的时候,很多事情都替你做了。是的,我想在没有 ORM 的情况下做到这一点,可能最后。是否有非常简单(不可靠)框架的示例,以便我可以更好地了解结构?
标签: php mysql activerecord