Задать вопрос

Как в Doctrine из Entity получить все записи?

Добрый день.
Самописный фреймворк. Используется Doctrine, с которым пока знаком поверхностно. Репозитории для таблиц ( например автоматически, как в Symfony ) отдельно не определяются. Для проведения опросов имеется два класса:
namespace Entities;

use \RN\registry,
    Doctrine\Common\Collections\ArrayCollection;

/**
 * @Table(name="rn_interview_tickets")
 */
class interview extends base_entity {
    /** @Id @Column(type="integer") @GeneratedValue()*/
    protected $id = null;
...
    /** типы опросов
     * @OneToOne(targetEntity="Entities\interviewTypes", inversedBy="interview")
     * @JoinColumn(name="id_ticket_type", referencedColumnName="id")
     */
    private $types;
...

и
namespace Entities;

/**
 * @Entity
 * @Table(name="rn_interview_ticket_types")
 */
class interviewTypes extends base_entity {
    /** @Id @Column(type="integer") @GeneratedValue()*/
    protected $id = null;

    ...

    /**
     * @OneToOne(targetEntity="Entities\interview", mappedBy="types")
     */
    private $interview;

    public function getTypesList() {
...


На странице редактирования опроса нужно вывести в SELECT-е все записи из таблицы ( все типы опросов ). Хотел это сделать в методе getTypesList класса interviewTypes, но не получается. getDoctrine возвращает 0 в обоих классах, поэтому до нужного репозитория достучаться не могу. Или нужно получить EntityManager? Подскажите ч.я.д.н.т и как вообще идеологически верно подобное получить. Спасибо.

P.S. Нашел решение, сделал в коде вне классов Entities так:
...
$o = $this->getObject(); // объект сущности опроса  Entities/interview.php
$em = Registry::getInstance() -> getEntityManager();
$types = $em -> getRepository( get_class( $o -> getTypes() ) ) -> findAll();
...

Но вопрос остался.
  • Вопрос задан
  • 172 просмотра
Подписаться Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Flying
У вас некорректные mapping'и.

У меня не очень хорошо получилось понять что вы хотели изобразить здесь... Из ваших классов следует, что интервью может быть многих типов одновременно, а не наоборот?

Но, вне зависимости от того как это должно быть - у вас по факту всё равно должна быть связь 1:N, а не 1:1, именно здесь основная ошибка.

Смените тип ассоциации, тогда со стороны OneToMany у вас будет коллекция entities, откуда вы их сможете получить.

Aside note: почитайте на досуге PSR-1, PSR-2, PSR-12
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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