gpt4 book ai didi

php - 从模型加载多行? (PHP, MySQL)

转载 作者:行者123 更新时间:2023-11-29 02:39:35 25 4
gpt4 key购买 nike

关于 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() 方法。此方法不适用于模型,因为它不是单个对象。

现在我明白了,例如,您可以在 Controller 本身中调用此方法(函数)。但是在哪里可以定义这个方法(函数)呢?因为您不会在模型上执行此操作。

如果我错了,我也喜欢听听:)

最佳答案

基本上你的定义是正确的:

Model objects hold data and define the logic for manipulating that data. For example, a Student object in the Basic sample application is a model object. It holds data describing facts about the object like the first and last name of the student and has methods that can access and change this data (getters & setters). Model objects are not directly displayed. They often are reusable, distributed, persistent and portable to a variety of platforms.

(来自:http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/mvc.html)

如果您不只是将它放入模型中,那么将 getAllUsers() 函数放在哪里呢?

首先,当我们谈论术语“模型”时,我们并不总是指模型。在 MVC 中,模型 (M) 包含所有业务逻辑。这意味着它包含领域模型,这是您在这个问题中所指的模型。但它还包含服务层

服务层通常由提供功能的各种类组成,例如 getAllUsers()getAllUsersWhichOwnAGreenTruck()

这是一个很好的图形来证明这一点:

MVC Layers

(来源:Domain Model and Service Layer patterns in P of EAA)

在现代应用中,例如使用 Laravel PHP 框架构建,您通常会自动生成数据库以及模型和数据库映射/通信(示例 Eloquent ORM:https://laravel.com/docs/5.8/eloquent)。但是您开始在服务层内实现复杂的应用程序逻辑。

关于php - 从模型加载多行? (PHP, MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55617861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com