doctrine2 mvc实体/控制器设计

时间:2012-08-15 14:09:01

标签: php model-view-controller doctrine-orm

这是一个简单的问题,因为我是一个菜鸟。我正在学习如何在mvc设计模式中使用doctrine,我似乎总是对我应该在哪里查询实体的代码感到困惑。我有一个方法来查询实体用户,它应该去哪里?它应该放在我的实体,控制器还是存储库中?

我的代码:

ENTITY用户

<?php

namespace Entities;

use Doctrine\Common\Collections\ArrayCollection;

/** @Entity(repositoryClass="Entities\UserRepository") 
 *  @Table(name="users")
 */
 class Users {

/** @id @column */
protected $id;

/** @column */
protected $first;

/** @column */
protected $mi;

/** @column */
protected $last;

/** @column */
protected $userName;

/** @column */
protected $avatar;

/** @OneToMany(targetEntity="Blog", mappedBy="user") */
protected $blogs;

// Constructor
public function __construct() {
    $this->blogs = new ArrayCollection();
}

public function __get($property) {
    return $this->$property;
}

public function __set($property, $value) {
    $this->$property = $value;
}
}

获取用户的方法:它应该去哪里?

public function getUsers(){
    $query = $this->_em->createQuery('SELECT u FROM Entities\Users u');
    return $query->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
}

1 个答案:

答案 0 :(得分:0)

最好的方法是使用RepositoryClass并在那里添加自定义方法 优点是,当我们使用存储库类时,您不必重新定义查找方法

http://mackstar.com/blog/2010/10/04/using-repositories-doctrine-2