2017-03-28 7 views
0

私は教師から多くの関係にある教室を取得しようとしています。Symfony 2.7 Doctrineがクエリを正しくマウントしない

$classrooms = $this->getDoctrine()->getManager()->getRepository('AppBundle:Classroom')->findBy(array('teachers' => $teacher)); 

エラーが発生します。 教義がマウントされていない参加:

の実行中に例外が発生しました 'ID_1 AS t0.id SELECT NAME_2 AS t0.nameを、classroom_teacher.teacher_id =教室t0からinstitution_id_3 AS t0.institution_id?' paramsと[4]:

SQLSTATE [42S22]:列が見つかりません:1054不明な列 'classroom_teacher.teacher_id' 'where句'

におけるしかし、私は多くの

に多くを使用しています

クラスの教室

/** 
* Classroom 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ClassroomRepository") 
*/ 
class Classroom 
{ 
    /** 
    * @ORM\ManyToMany(targetEntity="Teacher", cascade={"persist"}, inversedBy="classrooms") 
    */ 
    private $teachers; 
    public function __construct() 
    { 
     $this->teachers   = new ArrayCollection(); 
    } 
} 

クラスの先生

/** 
* Teacher 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="AppBundle\Repository\TeacherRepository") 
*/ 
class Teacher implements AdvancedUserInterface, \Serializable 
{ 
    /** 
    * @ORM\ManyToMany(targetEntity="Classroom", mappedBy="teachers") 
    */ 
    protected $classrooms; 
    public function __construct() 
    { 
     $this->classrooms   = new ArrayCollection(); 
    } 
} 

どうしたのですか?

答えて

0

@ORM\JoinColumn(nullable=false)を追加してください。
php app/console doctrine:schema:update --forceを有効にするには更新してください。

/** 
    * Classroom 
    * 
    * @ORM\Table() 
    * @ORM\Entity(repositoryClass="AppBundle\Repository\ClassroomRepository") 
    */ 
    class Classroom{ 

    /** 
    * @ORM\ManyToMany(targetEntity="Teacher", cascade={"persist"}, inversedBy="classrooms") 
    * @ORM\JoinColumn(nullable=false)// this line was missing 
    */ 
    private $teachers; 
    public function __construct() 
    { 
     $this->teachers   = new ArrayCollection(); 
    } 
    } 

幸運

+0

号I'tsない問題=(私は移行でこれを試してみません:アプリ/コンソール教義:移行:デフと何も何も変更検出あなたの地図情報に –

0

- > findByは、多くの関係に多くのために動作しません。

私は、リポジトリ内の関数を作成するために必要な:

class ClassroomRepository extends \Doctrine\ORM\EntityRepository 
{ 
    public function getTeachers($id) 
    { 
     $qb = $this->createQueryBuilder('c'); 
     $qb->join('c.teachers', 'ct') 
      ->where($qb->expr()->eq('ct.id', $id)); 
     return $qb->getQuery()->getResult(); 
    } 
} 
関連する問題