Fehler beim targetEntity ist in einem anderen bundle

Ich bin immer folgende Fehlermeldung, wenn ich versuche zu tun ./app/console doctrine:migrate:diff:

 [Doctrine\ORM\Mapping\MappingException]                                        
  Class VNN\CoreBundle\Entity\Game is not a valid entity or mapped super class. 

Hier ist die Linie, die es verursacht:

/**
 * @ORM\ManyToOne(targetEntity="VNN\CoreBundle\Entity\Game")

Hier ist der relevante Teil meiner Klasse:

<?php

namespace VNN\PressboxBundle\Entity;

use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Query\Expr\OrderBy;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Type;
use VNN\CoreBundle\Entity\Game;

/**
 * VNN\PressboxBundle\Entity\Event
 *
 * @ORM\Table(name="event")
 * @ORM\Entity
 */
class Event
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="VNN\CoreBundle\Entity\Game")
     * @ORM\JoinColumn(name="core_game_id", referencedColumnName="game_id")
     **/
    private $coreGame;

Dem, was ich verstehe, es ist zu sagen ist nicht, dass es nicht finden VNN\CoreBundle\Entity\Game nur, dass Game ist kein gültiges Element. So, hier ist Game.php:

<?php

namespace VNN\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * VNN\CoreBundle\Entity\Game
 *
 * @ORM\Table(name="games")
 * @ORM\Entity
 */
class Game
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="game_id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer $homeSchoolId
     *
     * @ORM\Column(name="home_school_id", type="integer")
     */
    private $homeSchoolId;

    /**
     * @var integer $awaySchoolId
     *
     * @ORM\Column(name="away_school_id", type="integer")
     */
    private $awaySchoolId;

    /**
     * @ORM\ManyToOne(targetEntity="School")
     * @ORM\JoinColumn(name="home_school_id", referencedColumnName="school_id")
     **/
    private $homeSchool;

    /**
     * @ORM\ManyToOne(targetEntity="School")
     * @ORM\JoinColumn(name="away_school_id", referencedColumnName="school_id")
     **/
    private $awaySchool;

    /**
     * @ORM\ManyToOne(targetEntity="Sport")
     * @ORM\JoinColumn(name="sport_id", referencedColumnName="sport_id")
     **/
    private $sport;

    /**
     * @var integer $datetime
     *
     * @ORM\Column(name="game_datetime")
     */
    private $datetime;

    /**
     * @var integer $homeScore
     *
     * @ORM\Column(name="home_score", type="integer")
     */
    private $homeScore;

    /**
     * @var integer $awayScore
     *
     * @ORM\Column(name="away_score", type="integer")
     */
    private $awayScore;

    public function getId()
    {
        return $this->id;
    }

    public function getHomeSchool()
    {
        if ($this->homeSchoolId > 0) {
            return $this->homeSchool;
        } else {
            return FALSE;
        }
    }

    public function getAwaySchool()
    {
        if ($this->awaySchoolId > 0) {
            return $this->awaySchool;
        } else {
            return FALSE;
        }
    }

    public function recordIsValid()
    {
        if (!($this->homeSchoolId > 0)) {
            return FALSE;
        }

        if (!($this->awaySchoolId > 0)) {
            return FALSE;
        }

        return TRUE;
    }

    public function getSport()
    {
        return $this->sport;
    }

    public function getHumanDatetime()
    {
        $date = new \DateTime($this->datetime);
        return $date->format('F d, Y g:ia');
    }

    public function getDatetime()
    {
        $date = new \DateTime($this->datetime);
        return $date->format('m/d/Y g:i:s a');
    }

    public function getOpposingSchoolWithRespectToSchoolName($schoolName)
    {
        if ($schoolName == $this->getHomeSchool()->getName()) {
            return $this->getAwaySchool();
        } else {
            return $this->getHomeSchool();
        }
    }

    public function getHomeScore()
    {
        return $this->homeScore;
    }

    public function getAwayScore()
    {
        return $this->awayScore;
    }
}

Warum sollte es nicht wie Game?

Update: ich hatte das exakt gleiche problem wieder, als ich versuchte zu tun die gleiche Sache mit einer anderen cross-bundle-Einheit. Ich fand dieser Beitrag, aber das add-a-leading-slash fix habe es nicht für mich wie es sich offenbar für den OP gibt.

  • Haben Sie versuchen, verwenden Sie "\VNN\CoreBundle\Entity\Game" statt "VNN\CoreBundle\Entity\Game"?
  • Ja. Es hat nicht wie, dass, Sie entweder.
  • Welche version von Symfony und doctrine benutzen Sie? Ich habe das gleiche setup in einem meiner Projekte, und es funktioniert es :/ Aber ich Stimme mit Ihnen überein, dass es aussieht wie Spiel ist nicht gültig, jedoch, wenn man in der Lehre-code, die Meldung sollte nur kommen, wenn die Klasse nicht annotiert werden, als eine Lehre\ORM\Mapping\Entität, die diese eindeutig ist...
InformationsquelleAutor Jason Swett | 2012-04-29
Schreibe einen Kommentar