Witam!
Mam problem z Doctrinem 2.6 (php 7.2).

Stworzyłem dwie encje - Book oraz Author. Połączyłem je relacją many-to-one (wiele książek może mieć jednego autora). Na podstawie encji wygenerowałem bazę danych oraz wypełniłem ją przykładowymi danymi. Poniżej kod:

<?php

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="books")
 **/
class Book
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    private $book_nid;

    /**
     * @ORM\ManyToOne(targetEntity="Author", inversedBy="books")
     * @ORM\JoinColumn(name="author_nid", referencedColumnName="author_nid")
     */
    private $author;

// niżej publiczne gettery i settery
}

<?php

namespace Model;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity()
 * @ORM\Table(name="authors")
 **/
class Author
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    private $author_nid;

    /**
     * @ORM\Column(type="string")
     */
    private $name;

    /**
     * @ORM\OneToMany(targetEntity="Book", mappedBy="author")
     */
    private $books;

// niżej publiczne gettery

Problem jest taki, że jak wczytuję książkę, a następnie chcę przejść do autora i odczytać jego imię, dostaję nulla. Kod poniżej

        $book_repository = $this->entity_manager->getRepository(Book::class);
        $book = $book_repository->find(1);
        $author_name = $book->getAuthor()->getName();

Zmienna $author_name jest nullem.

Jednakże, gdy w encji Book w adnotacji relacji do autora dodam formułkę fetch="EAGER" wszystko zaczyna działać poprawnie, relacja się wczytuje i $author_name się wypełnia.

// fragment kodu encji Book
    /**
     * @ORM\ManyToOne(targetEntity="Author", inversedBy="books", fetch="EAGER")
     * @ORM\JoinColumn(name="author_nid", referencedColumnName="author_nid")
     */
    private $author;

Co ja robię tutaj nie tak?

Dodam jeszcze, że odczytanie danych "w drugą stronę" (książki danego autora) działa tak jak trzeba