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

Мне особо не надо юзать Doctrine ORM. Просто нужен некий класс в котором будут методы для получения данных с нативным SQL ну или DQL ну или динамичные методы тоже для простых выборок. Как лучше всё сделать, просто создать Entitiy и описать там нужные поля, а потом пользоваться динамичными методами типа findOneBy* и т.д. Или просто создать Repository без Entity и описать там свои методы? Или лучше вообще к этом не привязываться, а создать отдельный класс, получать там $this->getDoctrine()->getManager(); и уже делать запросы используя методы createQuery? Почему так, потому что нужно делать очень сложные запросы, которые с ORM замучаешься делать.
  • Вопрос задан
  • 1208 просмотров
Решения вопроса 1
@MrBikus Автор вопроса
В итоге я всё это решил так, я выкинул на помойку этот поганый Doctrine\ORM и стал просто использовать Doctrine\DBAL. Я создал папку Models, там объявил класс Model в нем получаю Doctrine\DBAL\Connection. Затем от Model я наследую другие мои модели. Для того что бы всё это нормально работало, нам нужна более совершенная реализация DI, что бы постоянно не объявлять каждую модель как сервис, для этого есть шикарнейший бандл https://github.com/dunglas/DunglasActionBundle.
В итоге у меня нету ненужных Entity и Repository, я сократил код не в 2 или 3 раза, а наверное раз в 5! Теперь у меня есть простая и лаконичная модель без отвратительнейших и ненужных ORM связей. При этом я могу использовать все прелести Doctrine\DBAL!
Пример Model:
namespace AppBundle\Models;

use Doctrine\DBAL\Connection;

class Model
{
    private $connection;

    public function __construct(Connection $connection)
    {
        $this->connection = $connection;
    }

    public function getConnection()
    {
        return $this->connection;
    }
}

Так что смело выкидывайте Doctrine\ORM да и вообще не используйте ORM!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Adelf
Мне особо не надо юзать Doctrine ORM.

И не надо. Используйте PDO какое-нибудь напрямую. И те самые классы(c findBy*) самому реализовать. Зачем пушкой(доктриной) по воробьям бить?
Ответ написан
Ваш ответ на вопрос

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

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