在另一个捆绑存储库中添加实体

时间:2014-05-08 18:15:49

标签: symfony

我有一个名为ActiviteBundle的软件包,我使用它有一个服务。我可以要求该服务通过id从另一个包(名为GestigrisBundle,该行为有一个有点主要的应用程序)返回给我一个特定的活动。到目前为止没问题。我的GestigrisBundle有一个实体,它扩展了位于Activite Bundle中的抽象实体:

抽象类:

namespace leseulsteve\ActiviteBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 */
abstract class AbstractActivite
{...

具体课程:

namespace leseulsteve\GestigrisBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use leseulsteve\ActiviteBundle\Entity\AbstractActivite;

/**
 * @ORM\Entity(repositoryClass="leseulsteve\ActiviteBundle\Entity\ActiviteRepository")
 */
class Demystification extends AbstractActivite
{

现在我的问题是我希望从位于ActiviteBundle的服务中获得'去神秘化'。使用此代码:

控制器:

namespace leseulsteve\GestiGrisBundle\Controller;

use leseulsteve\GestiGrisBundle\Entity\Demystification;

class DemystificationController extends Controller
{
    public function testAction()
    {
        $service = this->container->get('leseulsteve_activite.activites');
        $demys = $service->getActivite('Demystification', 1);
    }
}

服务

namespace leseulsteve\ActiviteBundle;

use Doctrine\Common\Persistence\ObjectManager;

class Activites
{
    public function getActivite($entite, $id)
    {
        $repository = $this->entityManager->getRepository('leseulsteveActiviteBundle:'.$entite);
        $activite = $repository->find($id);
    }
}

我收到此错误消息:

  

警告:class_parents():Class   leseulsteve \ ActiviteBundle \ Entity \ Demystification不存在和   无法载入   C:\ GestiGris3 \厂商\教义\共同\ lib中\学说\共同\持久性\映射\ RuntimeReflectionService.php   第40行

我猜这与名称空间或我不是那样的东西有关 在php中熟悉了!!如果有人可以帮助我,那将是可爱的 那!希望我也很清楚:))

1 个答案:

答案 0 :(得分:2)

使用这个:

$this->entityManager->getRepository('leseulsteveActiviteBundle:Demystification');

你要求Doctrine加载这个类:

leseulsteve\ActiviteBundle\Entity\Demystification

Doctrine也理解完整的班级名称:

$this->entityManager->getRepository('leseulsteve\ActiviteBundle\Entity\Demystification');

这是一个简单的约定。


你的班级似乎是:

leseulsteve\GestigrisBundle\Entity\Demystification

所以你必须问问Doctrine:

$this->entityManager->getRepository('leseulsteveGestigrisBundle:Demystification');

或者这个:

$this->entityManager->getRepository('leseulsteve\GestigrisBundle\Entity\Demystification');