不尊重自我参照关系的学说

Doctrine not honoring self-referencing relationship

我有一个具有自引用一对多关系的 User 实体 - 每个 User 拥有一组学生(也是用户):

<?php

namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\Common\Collections\ArrayCollection;


/**
 * User
 */
class User extends BaseUser
{
    /**
     * @var int
     */
    protected $id;

    private $students;

    // ....

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

    public function __construct() {
        $this->students = new ArrayCollection();
        // ...
        parent::__construct();
    }
    /**
     * Remove student
     *
     * @return User
     */
    public function removeStudent($student)
    {
        $this->students->removeElement($student);
        return $this;
    }

    /**
     * Add a student
     *
     * @param User $students
     *
     * @return User
     */
    public function addStudent($student)
    {
        $this->students->add($student);
        return $this;
    }

    /**
     * Get students
     *
     * @return User
     */
    public function getStudents()
    {
        $this->students;
    }

    /**
     * Set students
     *
     * @param User $students
     *
     * @return User
     */
    public function setStudents($students)
    {
        $this->students = $students;

        return $this;
    }
    // ....
}

映射完成为 one-to-many unidirectional with join table

AppBundle\Entity\User:
    type: entity
    table: null
    repositoryClass: AppBundle\Repository\UserRepository
    id:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
    fields:

    // ...

    manyToMany:
      students:
        targetEntity: User
        joinTable:
          name: mentors_students
          joinColumns:
            mentor_id:
              referencedColumnName: id
          inverseJoinColumns:
            student_id:
              referencedColumnName: id
              unique: true              
    lifecycleCallbacks: {  }

现在,当我 add/edit 一个使用 EasyAdmin 包的用户时,我可以为该用户添加学生。但是,当我检索实体时,学生 属性 始终为 null。例如,当我查看用户列表时:

这里的用户 'sagarl3232' 应该是 'sj' 的学生,但上面的视图清楚地显示 属性 检索到时为空。

实体 正确保存在数据库中。 也就是说,连接 table 具有正确的值:

为什么教义要这样对我?不是应该自动补水学生数组吗?

你的getter什么都return!

/**
 * Get students
 *
 * @return User[]
 */
public function getStudents()
{
    return $this->students;
}

顺便说一句,为什么您也应该调整文档块。 getter 应该是 return 数组 User[]