Ich nehme an, Sie verwalten Ihre Entitäten mit Lehre.
Sie sollten einen Repository-Service für diesen Zweck erstellen.
/**
* @Entity(repositoryClass="CarRepository")
*/
class Car
{
// ...
}
dieses Repository deklarieren als Dienst:
dieses Repository innerhalb des Controllers
insurance_fee_api:
class: My\InsuranceFee\Api
car_repository:
class: Doctrine\ORM\EntityRepository
factory_service: doctrine.orm.default_entity_manager
factory_method: getRepository
arguments:
- My\Entity\Car
calls:
- ['setInsuranceFeeApi', ['@insurance_fee_api']]
Verwenden zu holen
use Doctrine\ORM\EntityRepository;
class CarRepository extends EntityRepository
{
$protected $insuranceFeeApi;
public function setInsuranceFeeApi($insuranceFeeApi)
{
$this->insuranceFeeApi = $insuranceFeeApi;
return $this;
}
/**
* overwrite doctrine repository functions you will use to enrich your car entities with insurancefee objects
*/
public function fetchAll()
{
$insuranceFees = $this->insuranceFeeApi->getInsuranceFees(); //pseudocode
$cars = parent::fetchAll();
//enrich your car instances here
return $cars;
}
}
Set dieses Repository als Repository für Ihr Fahrzeug Einheit verwendet werden Ihre Auto-Instanzen:
$carRepository = $this->get('car_repository');
$cars = $carRepository->fetchAll(); // cars with insurancefees
Sie können diese Car-Instanzen nun an Ihre View-Templates übergeben und nach Belieben auf die Versicherungsbeiträge zugreifen.
Nachteile mit dieser Methode:
Sie können nicht Konstruktor-Injektion mit den Abhängigkeiten von CarRepository verwenden
Sie können nicht auf das Repository erhalten mit $this->getDoctrine()->getRepository()
. Stattdessen müssen Sie das Repository über Container
abrufen Sie sollten immer Logik zwischen Controllern, Services, Repositories, Fabriken usw. trennen. Controller sollte nicht viel tun. Repository sollte nur mit DB-Dingen umgehen. Factory sollte für das Daten/Modell-Mapping verwendet werden. Der Dienst sollte das meiste aus der Logik machen. "Thin Controller, fetter Service". Es hört sich so an, als würden Sie hier mit Daten arbeiten, sodass das Mapping in eine Factory-Klasse übergeht. So wird es gemacht. [Wie man Service, Modell und Fabrik verwendet, um paginiertes json-Ergebnis in Symfony zu erstellen] (http://www.inanzzz.com/index.php/post/yl5h/how-to-use-service-model-and-facco- paginiert-json-result-in-symfony erstellen – BentCoder