簡體   English   中英

Symfony2數組集合不返回任何內容

[英]Symfony2 Array Collection returns nothing

每當我嘗試使用其ID將所有用戶都放在特定教室內時,它什么也不會返回。 我與user_id和class_id有聯系

Classroom.orm.yml
  id:
    classID:
      column: class_id
      type: integer
      generator: { strategy: AUTO }
  fields:
  manyToMany:  // <---- this is the map
    classUsers:
      targetEntity: acme\UserBundle\Entity\User
      mappedBy: userClassrooms
  oneToMany:
    classAnnouncement:
      targetEntity: acme\ClassroomBundle\Entity\Announcements
      mappedBy: announcementClass
  manyToMany:
    classLesson:
      targetEntity: acme\ClassroomBundle\Entity\Lessons
      inversedBy: lessonClass
      joinTable:
        name: classroom_lessons
        joinColumns:
          fk_class_id:
            referencedColumnName: class_id
        inverseJoinColumns:
          fk_lesson_id:
            referencedColumnName: lesson_id


User.orm.yml

acme\UserBundle\Entity\User:
  type:  entity
  table: reg_user
  id:
    userID:
      column: user_id
      type: integer
      generator: { strategy: AUTO }
  fields:
...
  manyToMany: //this is the map
    userClassrooms:
      targetEntity: acme\ClassroomBundle\Entity\Classroom
      inversedBy: classUsers
      joinTable:
        name: classroom_users
        joinColumns:
          fk_user_id:
            referencedColumnName: user_id
        inverseJoinColumns:
          fk_class_id:
            referencedColumnName: class_id

Classroom.php
...   
public function __construct()
    {
        $this->classUsers = new ArrayCollection();  
//other array collections
        $this->classAnnouncement = new ArrayCollection(); 
        $this->classLesson = new ArrayCollection();
    }
    public function addClassUser(\acme\UserBundle\Entity\User $classUsers)
    {
        $this->classUsers[] = $classUsers;
           return $this;
    }

    public function removeClassUser(\acme\UserBundle\Entity\User $classUsers)
    {
        $this->classUsers->removeElement($classUsers);
    }
    public function getClassUsers()
    {
        return $this->classUsers;
    }

Controller
public function StudentClassroomAction($classID)
    {

        $class_repository = $this->getDoctrine()->getRepository('acmeClassroomBundle:Classroom');
        $classroom = $class_repository->find($classID); //im sure this stores an object of classroom
        $userinfo = $classroom->getClassUsers(); //THIS IS THE THING!!!

 //first i tried rendering it in twig. still gives me nothing
  /*return $this->render('acmeClassroomBundle:Classrooms:Student.html.twig',array(
            'classroom' => $classroom, 
            'classuser' => $userinfo));
            */
//I change it to response to know if something is stored in $userinfo it returns an empty page rather than an error.Then $userinfo still has no object stored.
        return new response($userinfo);


    }


tbl: classroom_users
 ______________________________
|  fk_user_id   |  fk_class_id|
-------------------------------
|        1      |     1       |
|        2      |     1       |
-------------------------------

誰能告訴我,怎么了? 我真的無法確定現在是哪一個,因為它不會向我返回任何錯誤。

這聽起來會很愚蠢,但是Yaml映射格式不正確,這就是為什么無法讀取映射的原因。

將教室.orm.yml修復為

Classroom.orm.yml
manyToOne:
classCreatedBy:
  targetEntity: acme\UserBundle\Entity\User
  joinColumn:
    name: fk_created_by
    nullable: false
    referencedColumnName: user_id
oneToMany:
classAnnouncement:
  targetEntity: acme\ClassroomBundle\Entity\Announcements
  mappedBy: announcementClass

manyToMany: //changed this one
classUsers:
  targetEntity: acme\UserBundle\Entity\User
  mappedBy: userClassrooms

classLesson:
  targetEntity: acme\ClassroomBundle\Entity\Lessons
  inversedBy: lessonClass
  joinTable:
    name: classroom_lessons
    joinColumns:
      fk_class_id:
        referencedColumnName: class_id
    inverseJoinColumns:
      fk_lesson_id:
        referencedColumnName: lesson_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM