PHP MVC的数据库对象的关系

我试图找出如何在PHP数据库关系模型。 例如说我有一个用户类和Book类。 用户有许多书(一到多)。

我已经看到了,你可以做框架,

$书=的getUser($ ID) - > getBooks(); 检索属于以$ ID用户的所有书籍。

所以我想关于做这件事是(我不想使用框架或ORM)1.获取用户第一2.获取属于用户(两个SQL查询)或1。在书本中属于用户所有的书使用SQL连接查询。

我希望这是通用的,因此它可以为许多不同的方案工作,所以说为实例。 用户有很多书,书中有许多评论等..

提前致谢。 约翰

--------------解决方案-------------

做一些通用的被称为ORM(如学说为例),这是很难建立一个。

如果你想创建你的,一个简单的方法,开始是用代理对象模型从数据库中分离出来:

<?php

class User
{
protected $id;
protected $books;

public function getBooks()
{
return $this->books;
}

public function fromArray(array $data)
{
if (isset($data['id'])) {
$this->id = $data['id'];
}
}
}

class Book
{
protected $id;
protected $name;

public function fromArray(array $data)
{
if (isset($data['id'])) {
$this->id = $data['id'];
}
if (isset($data['name'])) {
$this->name = $data['name'];
}
}
}

class UserProxy extends User
{
public function getBooks()
{
$userId = $this->id;
$booksArr = // do sql query to fetch books belongs to $userId
$books = array();
foreach ($booksArr as $bookArr) {
$book = new Book();
$book->fromArray($bookArr);
$books[] = $book;
}

$this->books = $books;
parent::getBooks();
}
}

您可以提高我的例子有:

使用一个类来管理集合(类似:学说\ COMMON \收藏\ ArrayCollection中)

使用反射(而不是fromArray方法):

  • 得到与ReflectionClass :: GetProperties中对象的属性()。
  • 它们设置为true与ReflectionProperty :: setAccessible()。
  • 与ReflectionProperty捆成:: setValue方法()。


编辑:

这里有一个例子:

<?php

$userArr = // fetch your user from database (with an associative array)
$user = new User();
$user->fromArray($userArr);

var_dump($user->getBooks());

分类:php 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.647 (s). 10 q(s)