3

我知道在 php 中,在课堂上有数据库表是一种很好的做法。所以,

$myTable = new DbTable_Users();
$res = $myTable->doQuery();
.
.
$res->getID();
$res->getNAME();

但是如果我看到一个结果集,可以有 JOIN,所以混合字段。一个类不能扩展 2 个类。那么该如何躲避呢?

$res = Factory::doQuery ('SELECT * FROM A LEFT JOIN B ON A.ID = B.ID');
// A fields => ID, FIELD1, FIELD2
// B fields => ID, DATE, FIELD2

$res->getID();    - **now which field?? A.ID or B.ID** ??
4

2 回答 2

1

有多种方法可以设计所谓的复合模型(其中某些字段实际上可能与另一个表相关)。

就我而言,最明确的方法是将数据库表/映射器设计为一种类型的类,而将域模型设计为另一种类型的类;后者将使用前者作为构建块。

于 2012-04-30T14:13:45.573 回答
1

我对如何处理和组织此类数据的看法:

你的DbTable_Users对象应该是一个User对象。它应该包含一个用户的信息(大概是数据库中的一行数据)。您可能希望有一个Users(复数)对象用于用户对象的集合。但是,array($user1, $user2, $user3)可能对您有用。

假设您有一个Post用户发布的对象。而且,您希望获取用户发布的所有帖子及其所有信息。通常,这将是某种连接查询:

SELECT * FROM users INNER JOIN posts ON users.id = posts.user_id WHERE users.id = 1;

在内部,这将创建一个User对象和多个Post对象来表示从连接返回的数据。您可以通过 访问此信息$user->posts

于 2012-04-30T14:14:51.983 回答