Получить EAGER не работает с отношениями 2-го уровня - PullRequest
0 голосов
/ 28 сентября 2018

Просто пример:

/**
 * @ORM\Entity
 */
class Menu
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\OneToMany(targetEntity="MenuDish", mappedBy="menu", fetch="EAGER")
     */
    private $menu_dishes;

    public function __construct()
    {
        $this->menu_dishes = new ArrayCollection();
    }
}

/**
 * @ORM\Entity
 */
class MenuDish
{
    /**
     * @ORM\ManyToOne(targetEntity="Dish", inversedBy="menu_dishes", fetch="EAGER")
     */
    private $dish;
}

Затем я пытаюсь получить меню:

$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository(Menu::class);
$menu = $repo->find(1);

Затем я смотрю в XDebug и вижу, что Menu :: $ menu_dishes - это Коллекция сущностей (непрокси) все ок, EAGER работает.НО Меню :: $ menu_dishes :: $ блюдо содержит Прокси!Есть ошибка?$ блюдо с пометкой fetch = EAGER.Когда я отмечаю какое-либо свойство как FETCH = EAGER, я ожидаю, что это свойство не будет содержать прокси-класс.Он мне нужен для борьбы с SoftDelete, реальная проблема в том, что $ dish на самом деле мягко удаляется, и fetch eager может исправить это, установив $ dish как null, но это не работает.Как заставить EAGER работать над свойством блюд?

...