我有一個Employee對象樹(它們是樹狀層次結構,每個人都有一個領導,所有領導都有更多的員工)。所有員工都有一個稱爲單位的整數參數。Symfony/Doctrine 2 - 在實體中使用配置參數
/**
* @ORM\Entity
* @ORM\Table(name="employees")
*/
class Employee
{
/**
* @ORM\Id
* @ORM\Column(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="Employee", mappedBy="leader")
*/
protected $employees;
/**
* @ORM\ManyToOne(targetEntity("Employee", inversedBy="employees")
*/
protected $leader;
}
我需要讓所有的員工,誰擁有最多N個單位,其中N中config.yml
定義。起初,我試圖將$ configContainer推入$ GLOBALS,並在ArrayCollection :: filter()的Closure中使用它。現在,我發現了一個方法,這樣我就可以use
變量在封閉:
public function getBestEmployees(&$configContainer)
{
return $this->getAllEmployees()->filter(
function bestEmployees($employee) use ($configContainer)
{
return ($employee->getUnits() >= $configContainer->getParameter('best_unit_count'));
}
);
}
現在,我不知道是否有從實體訪問的配置參數任何其他方式,或者我真的必須要通過整個configContainer作爲參考?或者我是否完全錯誤?
您可能還有一個EmployeeManager服務,它將注入參數和代理或裝飾方法調用。 – 2012-07-16 12:15:44
EntityManager服務實際上是最乾淨的解決方案。在控制器中注入動作並不比直接注入實體好很多。 – 2015-08-20 21:47:26