b85*_*411 5 doctrine controller symfony
我目前正在使用一个函数来获取我的存储库:
public function getRepositories()
{
// Tasks
$tasks = $this->getDoctrine()
->getRepository('Model:Task');
// Task Info
$taskInfos = $this->getDoctrine()
->getRepository('Model:TaskInfo');
return array(
'tasks' => $tasks,
'taskInfos' => $taskInfos,
);
}
Run Code Online (Sandbox Code Playgroud)
所以在我的控制器动作中,我可以像这样调用一些SQL:
$repositories = $this->getRepositories();
$task = $repositories['tasks']->findOneById($id);
Run Code Online (Sandbox Code Playgroud)
但是现在我有一些控制器,我注意到我正在将相同的getRepositories()函数复制到每个控制器中,因为它重复复制代码.
我想要的是拥有一个帮助类,这可能是其中的一个功能.
但是我如何做到这一点,因为助手类不会是一个控制器,$this->getDoctrine()显然不会有效?
谢谢
您可以使用服务(http://symfony.com/doc/current/book/service_container.html)并注入学说.
services:
my.helper.class:
class: Acme\MyBundle\Helper\MyHelper
arguments: [ @doctrine.orm.entity_manager ]
Run Code Online (Sandbox Code Playgroud)
<?php
namespace Acme\MyBundle\Helper;
use Doctrine\ORM\EntityManager;
class MyHelper
{
protected $manager;
public function __construct(EntityManager $manager)
{
$this->manager = $manager;
}
public function getRepositories()
{
$tasks = $this->manager->getRepository('Model:Task');
$taskInfos = $this->manager->getRepository('Model:TaskInfo');
return array(tasks, taskInfos);
}
}
Run Code Online (Sandbox Code Playgroud)
话虽这么说,我并不真正了解你的情况,因为控制器是为了获取数据并将其返回.
你不是在重复逻辑.
看起来太多了,实体经理已经是这样的帮手了.
| 归档时间: |
|
| 查看次数: |
7281 次 |
| 最近记录: |