我有一个名为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中熟悉了!!如果有人可以帮助我,那将是可爱的 那!希望我也很清楚:))
答案 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');