2012-08-15 102 views
0

這是一個簡單的問題,因爲我是一個noob。我正在學習如何在mvc設計模式中使用原則,而且我總是對我應該在哪裏放置查詢實體的代碼感到困惑。我有一個方法來查詢實體用戶,它應該去哪裏?它應該放在我的實體,控制器還是存儲庫中?doctrine2 mvc實體/控制器設計

我的代碼:

實體用戶

<?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); 
} 
+0

主義實體應該是模型層的一部分,不能直接從控制器進行交互。也許[this](http://stackoverflow.com/a/5864000/727208)會有一些亮點,特別是在Doctrine實現數據映射模式(或者相當接近它的東西)之後。基本上,檢索用戶的方法應該在服務中使用,但如果您正在編寫純SQL查詢,則使用ORM看不出任何意義。 – 2012-08-15 14:31:40

回答