PHP DAO 让用户彼此成为朋友(技术上)
Posted
技术标签:
【中文标题】PHP DAO 让用户彼此成为朋友(技术上)【英文标题】:PHP DAO Letting users befriend eachother (technically) 【发布时间】:2014-02-07 22:03:52 【问题描述】:假设我有可以互相成为朋友的用户,从技术上讲,我如何在 php 中使用 DAO 解决这个问题?
数据库:
users | user_friends
- userid | - userid_user1
- username | - userid_user2
PHP 用户对象:
class User
private $userid;
private $username;
// getters and setters
我是否应该使用这种方法与用户交朋友:
$u1 = UserDAO::getInstance()->findUserById(1);
$u2 = UserDAO::getInstance()->findUserById(2);
UserDAO::getInstance()->befriendUsers($u1, $u2);
或者我应该使用这种方法:
$u1 = UserDAO::getInstance()->findUserById(1);
$u2 = UserDAO::getInstance()->findUserById(2);
$u1->befriend($u2);
// befriend method would look like this in the User object
public function befriend(User $u)
UserDAO::getInstance()->befriend($this, $u);
或者其他方式?
【问题讨论】:
正如@MikeSW 所说,这不是数据访问对象的角色。 DAO 应该映射应用程序中的对象并将它们持久保存到数据存储(数据库、文件等)。它不应包含任何业务逻辑,例如与用户交朋友。 【参考方案1】:实际上,没有。 UserDAO 处理用户但不处理用户关系,这是一个不同的问题。
为简单起见,您应该有另一个会关心友谊的 FriendsDao。当然,当用户被删除时,您需要更新好友关系。
【讨论】:
那么 FriendsDAO 有一个方法,它接受两个 User 对象,然后在这种情况下将记录保存到 user_friends 数据库表中? 另外,返回 User 对象的 UserDAO::getInstance()->findUserById(1) 方法是 DAO 的任务吗?以上是关于PHP DAO 让用户彼此成为朋友(技术上)的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot JPA:在自联接关系中的 JSON 视图上递归