0

私はUser自己参照の一対多の関係を持つエンティティを持っています - EveryUserは一連の学生 (ユーザーでもあります) を所有しています:

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

マッピングは、結合テーブルを使用した 1 対多の一方向として行われます

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: {  }

EasyAdmin バンドルを使用してユーザーを追加/編集すると、そのユーザーの生徒を追加できるようになりました。ただし、エンティティを取得すると、学生のプロパティは常にnullです。たとえば、ユーザーのリストを表示すると、次のようになります。

ここに画像の説明を入力

ここで、ユーザー「sagarl3232」は「sj」の学生であると想定されていますが、上のビューでは、取得したプロパティが null であることを明確に示しています。

エンティティはデータベースに正しく保持されます。つまり、結合テーブルには正しい値があります。

ここに画像の説明を入力

なぜDoctrineは私にこれをしているのですか? 学生の配列を自動的に水和することになっていませんか?

4

1 に答える 1