gpt4 book ai didi

php - 从 symfony 2.1 中的实体获取服务容器(Doctrine)

转载 作者:行者123 更新时间:2023-12-03 00:21:12 25 4
gpt4 key购买 nike

如何在 Doctrine 中使用实体即服务(使用 Symfony 2.1)。

使用示例:

<?php

namespace MyNamespace;

class MyEntity
{
protected $container = NULL;
public function __construct($container)
{
$this->container = $container;
}

/**
* @ORM\PrePersist
*/
public function()
{
// Must call to container and get any parameters
// for defaults sets entity parameters
$this->container->get('service.name');
}
}

因此,我需要访问整个容器。

最佳答案

编辑:这不是首选方式,这是在实体内获取服务容器的唯一方法,这不是一个好的做法,应该避免,但这只是回答了问题。

如果您仍然需要容器和/或存储库,您可以像这样扩展基本 abastractEntity:

<?php

namespace Acme\CoreBundle\Entity;

/**
* Abstract Entity
*/
abstract class AbstractEntity
{
/**
* Return the actual entity repository
*
* @return entity repository or null
*/
protected function getRepository()
{
global $kernel;

if ('AppCache' == get_class($kernel)) {
$kernel = $kernel->getKernel();
}

$annotationReader = $kernel->getContainer()->get('annotation_reader');

$object = new \ReflectionObject($this);

if ($configuration = $annotationReader->getClassAnnotation($object, 'Doctrine\ORM\Mapping\Entity')) {
if (!is_null($configuration->repositoryClass)) {
$repository = $kernel->getContainer()->get('doctrine.orm.entity_manager')->getRepository(get_class($this));

return $repository;
}
}

return null;

}

}

关于php - 从 symfony 2.1 中的实体获取服务容器(Doctrine),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13152610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com