PHP MVC 数据库关系对象
我正在尝试弄清楚如何在 PHP 中对数据库关系进行建模。比如说我有一个 User 类和一个 Book 类。一个用户有很多本书(一对多)。
我在框架中看到你可以这样做,
$books = getUser($id)->getBooks(); 检索属于具有 $id 的用户的所有书籍。
所以我考虑用其中之一来做(我不想使用框架或 ORM), 1.先获取用户 2.获取属于用户的图书 (两个SQL查询) 或者 1.使用sql连接查询获取属于该用户的所有书籍。
我希望这是通用的,这样它就可以适用于许多不同的场景,例如。用户有很多书,书有很多评论等等。
提前致谢。 约翰
I am trying to figure out how to model database relationships in PHP. Say for instance I have a User class and a Book class. A User has many books (one-to-many).
I have seen in frameworks that you can do,
$books = getUser($id)->getBooks();
to retrieve all books that belong to user with $id.
So I thought about doing it in either (i dont want to use frameworks or ORM),
1. get the user first
2. get the books that belong to user
(two SQL queries)
or
1. get all books that belong to the user using a sql join query.
I want this to be generic so it can work for many different scenarios, so say for instance. user has many books, book has many reviews and so on..
Thanks in advance.
john
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
做一些通用的事情称为 ORM(例如 Doctrine 例如),构建一个非常困难。
如果您想创建自己的代理对象,一个简单的开始方法是使用 代理对象 将模型与数据库分开:
您可以通过以下方式改进我的示例:
使用类来管理集合(类似于:Doctrine\Common\Collections\ArrayCollection)
使用反射(而不是
fromArray
方法):编辑:
这是一个示例:
Doing something generic is called an ORM (like Doctrine for example), it's very hard to build one.
If you want to create yours, an easy way to start is to use proxy objects to separate your model from database:
You can improve my example with:
use a class to manage collections (something like : Doctrine\Common\Collections\ArrayCollection)
use Reflection (instead of
fromArray
methods):EDIT:
here's an example: