@alexmixaylov

Будет ли влиять на производительность такой запрос?

Есть сущность Book, у которой связь ManyToOne с сущностью Location
class Book {
    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Location", inversedBy="bookFrom")
     * @ORM\JoinColumn(name="from_book", referencedColumnName="id")
     */
    private $fromBook;
}
class Location {
    /**
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Book", mappedBy="fromBook")
     */
    private $bookFrom;
}

в контроллере, мне нужно получить параметры Book
$from = $book->getFromBook();
таким образом я получаю всю связанную сущность
дальше $from я передаю параметром в другой репозиторий, чтобы осуществить другой поиск

ВОПРОС в следующем: Будет ли влиять на производительность такая конструкция
или нужно так
$from = $book->getFromBook()->getAlias();
вытаскивать значение сущности, а не саму сущность
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
или нужно так
$from = $book->getFromBook()->getAlias();
вытаскивать значение сущности, а не саму сущность

Если alias - это не поле, которое является Id (судя по вашему маппингу, это не так), то у вас будет всё равно вытащена вся сущность Book.
Только в случае, если вы сделаете
$book->getFromBook()->getId()
У вас не будет запроса в БД.
дальше $from я передаю параметром в другой репозиторий, чтобы осуществить другой поиск

Понимаете, в чём дело. Если вы начинаете вместо объектов через ORM тащить из базы значения конкретных полей, возможно, вам вообще не нужна ORM.

А вообще, вполне вероятно, что вы пытаетесь экономить на спичках. У вас сколько таких запросов будет на странице делаться?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы