2017-08-03 21 views
0

私はゲームと拡張の間に1対多の関係があります。 ゲームには多くの拡張機能があり、拡張機能は1つのゲームに属することができます。symfony 1対多[マッピング] doctrine:FAIL:validate

私はビン/コンソール教義行うと:スキーマ:検証を、私は次のエラーを取得する:

[Mapping] FAIL - The entity-class 'AppBundle\Entity\Expansion' mapping is invalid: * The association AppBundle\Entity\Expansion#game refers to the inverse side field AppBundle\Entity\Game#expansions which doesn't exist.

私は何度も何度も見てきたが、私は何が不足しているか見つけることができないよう、私はまた...

何かを見下ろすされなければならない、私はinversedBy =「拡張」削除しました - エラーが表示されないのが、私は小枝のダンプを行う場合、それはまた、何もしていません。

{{dump(game.expansions)}}

関連性がありますphpmyadminの中エーション:

  • 拡張テーブル:

enter image description here

  • ゲームテーブル:

enter image description here ゲームのエンティティ

<?php 

namespace AppBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 
use Doctrine\Common\Collections\ArrayCollection; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* Game 
* 
* @ORM\Table(name="game") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\GameRepository") 
*/ 
class Game 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="PlayLog", mappedBy="game") 
    * @ORM\OneToMany(targetEntity="Expansion", mappedBy="game") 
    * @ORM\OrderBy({"date" = "DESC"}) 
    */ 
    private $playlogs; 
    private $expansions; 
    private $users; 

    /** 
    * @return ArrayCollection 
    */ 
    public function getUsers() 
    { 
     return $this->users; 
    } 

    /** 
    * @param ArrayCollection $users 
    */ 
    public function setUsers($users) 
    { 
     $this->users = $users; 
    } 


    /** 
    * Game constructor. 
    */ 
    public function __construct() 
    { 
     $this->playlogs = new ArrayCollection(); 
     $this->expansions = new ArrayCollection(); 
     $this->users = new ArrayCollection(); 
    } 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * @Assert\NotBlank() 
    * @Assert\Length(
    *  min = "3", 
    * max = "100" 
    *) 
    * @ORM\Column(name="name", type="string", length=255, unique=true) 
    */ 
    private $name; 

    /** 
    * Get id 
    * 
    * @return int 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 


    /** 
    * Set name 
    * 
    * @param string $name 
    * 
    * @return Game 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 


    /** 
    * @return mixed 
    */ 
    public function getPlaylogs() 
    { 
     return $this->playlogs; 
    } 

    /** 
    * @return mixed 
    */ 
    public function getExpansions() 
    { 
     return $this->expansions; 
    } 


    public function addGameUser(User $user) 
    { 
     $this->users[] = $user; 
    } 
} 

拡張エンティティは

<?php 
namespace AppBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* Expansion 
* 
* @ORM\Table(name="expansion") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ExpansionRepository") 
*/ 
class Expansion 
{ 
    /************************** 
    * Relations 
    *************************/ 

    /** 
    * @ORM\ManyToOne(targetEntity="Game") 
    * @ORM\JoinColumn(name="game_id", referencedColumnName="id") 
    */ 

    private $game; 

    /************************** 
    * Properties 
    *************************/ 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * @Assert\NotBlank() 
    * @Assert\Length(
    *  min = "3", 
    * max = "100" 
    *) 
    * @ORM\Column(name="name", type="string", length=255, unique=true) 
    */ 
    private $name; 

    /************************** 
    * Getters and setters 
    *************************/ 
    /** 
    * @return mixed 
    */ 
    public function getGame() 
    { 
     return $this->game; 
    } 

    /** 
    * @param mixed $game 
    */ 
    public function setGame($game) 
    { 
     $this->game = $game; 
    } 

    /** 
    * Get id 
    * 
    * @return int 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set name 
    * 
    * @param string $name 
    * 
    * @return Expansion 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 
} 

答えて

1

ゲームエンティティのあなたのマッピングは奇妙に思える:

/** 
* @ORM\OneToMany(targetEntity="PlayLog", mappedBy="game") 
* @ORM\OneToMany(targetEntity="Expansion", mappedBy="game") 
* @ORM\OrderBy({"date" = "DESC"}) 
*/ 
private $playlogs; 
private $expansions; 
private $users; 

VARあたりのマッピング1を分離してみてください。また

/** 
* @ORM\OneToMany(targetEntity="PlayLog", mappedBy="game") 
*/ 
private $playlogs; 

/** 
* @ORM\OneToMany(targetEntity="Expansion", mappedBy="game") 
*/ 
private $expansions; 

/** 
* @ORM\OrderBy({"date" = "DESC"}) 
*/ 
private $users; 

私はあなたはが必要だと信じています拡張エンティティの10マッピング。 類似の例についてはhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-bidirectionalを参照してください。

+0

あなたが言ったようにコードをフォーマットしました。私が問題になると思っていたことは全くありません...ありがとう! – Ducky

関連する問題