我从来没有真正感谢ORM的,所以我认为解决这个问题的唯一方法就是自己建立一个基本的方法,这样我就可以看到所有的喧闹声了。因此,考虑到这一点,我需要包括哪些基本功能才能生成半可用的ORM?使用PHP构建ORM时需要哪些功能?
据我所知道的,那就基本上都需要这样的工作为最终程序员:
/*
* Create a user
*/
$user = new User();
$user->name = 'Joe';
$user->email = '[email protected]';
$user->save();
unset($user);
/*
* Create a game
*/
$game = new Game();
$game->name = 'soccer';
$game->save();
/*
* Set all users as players
*/
$users = ORM::factory('users');
$users = $users->findAll();
foreach ($users as $user) {
$user->setGame($game);
$user->save();
}
unset($users);
/*
* Get all games and show all users
*/
$games = ORM::factory('games')->findAll();
foreach($games as $game) {
print $game->name;
print 'Users in game:';
foreach($game->users as $user) {
print $user->name;
}
}
每个模型类将扩大这将对所有的基本方法
-
的ORM类
- 发现($ ID)
- 的findAll($哪里)
- 保存()
其它有用的功能会之类的东西:
- 能够要求具有一定的ID
User::find(34)
- 能够限制与WHERE类似的选项结果行的行
- 能扳平一行对象多行从另一张桌子。 (1到很多)
- 查询构建以便SQL自动写入。
任何人都可以告诉我我需要什么。我一直在寻找一些图书馆,如Doctrine,EZPDO,dORM和KohanaPHP,但我似乎无法找到一个易于理解的图书馆,以找出需要解决此项目的功能列表。
我发现一个image detailing一些红宝石的产品和一些IgnitedRecord项目的更多信息。
什么会这样的一个例子是什么? – Xeoncross 2009-11-03 02:54:03
您可能有一个DB模型,用户可以属于多个游戏 - 因此,在DB中,用户不会有一个FOREIGN KEY,那么您将拥有一个连接表。 ORM应该通过提供一个user-> getAllGames()或类似的东西来处理这个问题。 也想想: 1.提供加载用户时急于或延迟加载相关游戏的能力 2.提供在保存用户时保存所有相关游戏的能力。 – 2009-11-03 08:57:07