Doctrine2 связь многие-к-одному не будет использовать запрос JOIN

У меня есть сущность Автомобиль с отношением «многие к одному» с сущностью Владелец . Если я выберу все автомобили, Doctrine выполнит один запрос к таблице Car , а затем один запрос к таблице Owner для каждой машины . Таким образом, выборка N автомобилей превращается в N + 1 запросов вместо одного запроса JOIN между таблицами Car и Owner .

Мои объекты следующие:

/** @Entity */
class Car {

  /** @Id @Column(type="smallint") */
  private $id;

  /** @ManyToOne(targetEntity="Owner", fetch="EAGER")
      @JoinColumn(name="owner", referencedColumnName="id") */
  private $owner;

  public function getId()    { return $this->id; }
  public function getOwner() { return $this->owner; }
}

/** @Entity */
class Owner {

  /** @Id @Column(type="smallint") */
  private $id;

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

  public function getName() { return $this->name; }
}

Если я хочу Перечисляю машины с их владельцами, я делаю: и так оно и должно работать - или есть умный способ заставить Doctrine выполнять запрос JOIN вместо этого?

8
задан Benjamin 1 September 2012 в 12:30
поделиться