2014-01-24 8 views
0

Я новичок в Symfony, я сделал с ним веб-приложение, в котором пользователь связан с ManyToMany с Entity «Mission». Она не работает, потому что я получаю ошибкуЗвонок на неопределенный метод, ArrayCollection

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

Te getMission определяется в MissionEntity, и названный в конструкции. Должен ли я снова определить его? Я не понимаю.

Мой Пользователь:

<?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; 
    } 

} 

И Миссия Entity является:

/** 
    * @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 
} 

Как решить эту проблему? Спасибо

ответ

0

Либо у вас есть опечатка:

getMission 

вместо:

getMissions 

Или вы, конечно, не было, что метод, объявленный в сущности миссии, а также класс, которому вы звоните метод от нет в листинге. Убедитесь, что он наследуется от пользователя.

+0

О, спасибо, это была опечатка, я подумал, что это правильно. Но я не понял вторую часть вашего ответа; метод «пользователь» объявлен в объекте «Миссия», что мне делать больше? –

Смежные вопросы