質問

I'm new of Symfony, I made a web-application with it, in witch a User is in relation ManyToMany with an Entity "Mission". It doesn't work, because I get the error

 FatalErrorException: Error: Call to undefined method 
 Acme\ManagementBundle\Entity\UserGroundStation::getMission()

Te getMission is defined in the MissionEntity, and called in the construct. Do I have to define it again? I don't understand.

My User is:

 <?php

 namespace Acme\ManagementBundle\Entity;

 use Doctrine\ORM\Mapping as ORM;
 use FOS\UserBundle\Model\User as BaseUser;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\Common\Collections\Collection;


 /**
  * @ORM\Entity
  * @ORM\HasLifecycleCallbacks()
  * @ORM\Table(name="user")
  * @ORM\InheritanceType("JOINED")
  * @ORM\DiscriminatorColumn(name="type", type="string")
  * @ORM\DiscriminatorMap({"user_one" = "UserGroundStation", "user_two" = "UserOperator"})
  * @ORM\MappedSuperclass()
  *
  */
 abstract class User extends BaseUser
 {
     /**
      * @ORM\Id
      * @ORM\Column(type="integer")
      * @ORM\GeneratedValue(strategy="AUTO")
      */
     protected $id;
         /**
      * @ORM\ManyToMany(targetEntity="Acme\ManagementBundle\Entity\Mission", mappedBy="users")
      */
     protected $missions;

     public function __construct(){
         parent::__construct();
         $this -> missions = new ArrayCollection();
     }

     public function setMissions(Collection $missions){
         $this -> missions = $missions;
         return $this;
     }

     public function addMission($mission){
         $this -> missions -> add($mission);
         return $this;
     }

     public function getMissions(){
         return $this -> missions;
     }

 }

And the Mission Entity is:

  /**
  * @ORM\Entity
  */
 class Mission {
     /** 
      * @ORM\Id
      * @ORM\GeneratedValue
      * @ORM\Column(type="integer")
      * @var integer
      */
     protected $id;
         /** 
      * @ORM\Column(type="string", length=60)
      * @var String
      */
     protected $name;
     /** 
      * @ORM\Column(type="string", length=600)
      * @var String
      */
     protected $description;
     /**
      * @ORM\ManyToMany(targetEntity="Acme\ManagementBundle\Entity\User", inversedBy="users")
      */
     protected $users;

     public function __construct(){
         $this -> users = new ArrayCollection();
     }

     public function setUsers(Collection $users){
         $this -> users = $users;
         return $this;
     }

     public function addUser($user){
         $this -> users -> add($user);
         return $this;
     }

     public function getUsers(){
         return $this -> users;
     }
     //setters and getters for id, name and description
 }

How to solve this? Thank you

役に立ちましたか?

解決

Either you have a typo:

getMission

instead of:

getMissions

Or you surely do not have that method declared in Mission entity, also the class you are calling the method from is not on the listing. Ensure it inherits from User.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top