У меня есть сущность Автомобиль
с отношением «многие к одному» с сущностью Владелец
. Если я выберу все автомобили, 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 вместо этого?