Vlad
И такой еще вопрос есть ли смысл использовать doctrine если пишешь апи или лучше юзать pdo?
если хочеться писать сырые запросы,то их можно писать и в доктрине
Константин
если хочеться писать сырые запросы,то их можно писать и в доктрине
Да это понятно, просто не понятно нахрена она если в итоге возвражает гидратор
Константин
И расширять сущности сложнее с доктриной или я ошибаюсь?
Константин
Единственный плюс который я вижу только это фикстуры
Vlad
это очень удобно
Константин
Ну да еще миграции
Константин
Просто в апи мне кажется доктрина мало приминима, особенно если говорить о персонализации api то доктрина вообще не подходит
Кирилл
Доктрина работает с базой данных, это все что она делает. Она понятия не имеет про какие-то апи и прочие вещи.
Alexey Mishurovskiy
ты по апи пригимаешь данные, кладешь их на сущность c помощью Serializer валидируешь и сохраняешь в бд
Гречушников
а разве доктрина это не абстракция над данными?
Alexey Mishurovskiy
это все занимает 2 строчки кода. и пару десятков анотаций
Alexey Mishurovskiy
Для большинства задач доктрина работает достаточно быстро, чтобы не вызывать никаких проблем с ее использованием.
Alexey Mishurovskiy
и от нее можно отказаться где это действительно нужно
Константин
а разве доктрина это не абстракция над данными?
Я тоже ее считал абстрацией над данными
Alexey Mishurovskiy
а для того чтобы сделать выводы нужно оно или нет есть профайлеры. остальное все теории.
Alexey Mishurovskiy
при условии использования метода clear доктрина без проблем переваривает достаточно большие объемы данных
Dmitry
(англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой Каким боком это влияет на использование или неиспользование доктрины?
Dmitry
или под API подразумевают таскание данных из БД Битрикса24?
Anonymous
wow
Константин
(англ. application programming interface, API [эй-пи-ай][1]) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой Каким боком это влияет на использование или неиспользование доктрины?
Ну это определение апи не очень хорошее. А как относится, просто в основном получаемые данные от апи, это что то в виде ассоциативного массива, чаще всего. А определение которое вы описали более подходит к cli
Dmitry
Ну это определение апи не очень хорошее. А как относится, просто в основном получаемые данные от апи, это что то в виде ассоциативного массива, чаще всего. А определение которое вы описали более подходит к cli
я к тому, что апи скорей относится к слою UI, а доктрина - к Application и Model Апи и работа с БД могут быть реализованы совершенно независимо. И вопрос про "использование доктрины для апи" некорректен
Константин
Ну вот например нужно будет расширять сущности с фронта. Или это глупая затея?
Константин
Например добавлять новые поля
Константин
Ну мне кажется куча геморроя будет из за доктрины
Dmitry
Ну мне кажется куча геморроя будет из за доктрины
При динамической правке схемы будет куча гемороя не зависимо от наличия доктрины
Константин
Понял
Константин
ОК почитаю про это
Dmitry
Или в репозиториях можете составлять запросы с dql
Dmitry
А где про это почитать?
https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/dql-doctrine-query-language.html
Константин
https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/dql-doctrine-query-language.html
Только что читал эту доку и один хрен не понимаю как это применить)
Вадим
Только что читал эту доку и один хрен не понимаю как это применить)
Никак ты это не применишь ;) т.к. тебе надо писать приложение, и отдельно синхронизатор, который будет по какому-то ивенту (каждые н минут или по кнопке) синхронизировать данные с другим сервером. И доктрина тут не при чем.
Вадим
И никак она тебе не поможет в этом
Константин
А что из предложенного поможет? Dbal?
Вадим
Он поможет тебе только в разработке приложения, и все. И то не факт
Константин
Дак есть какой то вариант как мапить данные с bitrix24 ?
Константин
Малой кровью)
Вадим
А что из предложенного поможет? Dbal?
Ничего не поможет, т.к. не понятно что нужно. Для синхронизации базы можно просто реплику настроить, или нагуглить шел скрипт для этого. В любом случае нужно понимать сначала задачу, а потом искать инструменты
Константин
Ну пока что задача состоит в том что есть данные в битриксе и их нужно выгружать в mysql, самое логичное что вижу это их вытаскивать по апи, сериадизовть и потом мапить
Константин
Другой вариант без доктрины сырые данные гонять с апи битрикс в mysql
Константин
Но это уже не бест практис
Константин
Как я понимаю
Вадим
Да хоть в csv по ftp
Вадим
Нет тут бест практис
Вадим
Т.к. не понятны требования
Константин
Т.к. не понятны требования
Что нужно конкретизовать?
Вадим
Что нужно конкретизовать?
Нужно разбиратся в задаче полностью.
Вадим
Вариантов решения куча, дамп базы напрямую, реквесты напрямую к другому серверу, реквесты напрямую с кешированием, батч получение данных ( апи, аплоад файлов, загрузка самому по любому пртоколу). Хз что надо
Константин
Вариантов решения куча, дамп базы напрямую, реквесты напрямую к другому серверу, реквесты напрямую с кешированием, батч получение данных ( апи, аплоад файлов, загрузка самому по любому пртоколу). Хз что надо
А есть варианты как сериализвать данные с реста и мапить? По сути какая разница с пдо мы получаем данные или с реста или есть какое то фундаментальное отличие?
Константин
В мускуль
Вадим
А есть варианты как сериализвать данные с реста и мапить? По сути какая разница с пдо мы получаем данные или с реста или есть какое то фундаментальное отличие?
есть различия ) там у тебя база, а там у тебя сервер ) либо ты адаптер какой-то напишешь под то и под то, что б не было разницы) но как ты SQL в rest будешь конвертировать, я бы не хотел видеть )
Вадим
В мускуль
ну так с рест тебе приходит структура, сделай себе с ней что хочешь и сохраняй .. я хз шо ты хочешь )
Вадим
структуры разные, как в рест так и в твоей базе
Вадим
приводи к той которой нужно и сохраняй
Константин
Ок, понял) спасибо
Гречушников
разрешите нубский вопрос? как в доктрине указать запрос всех записей, у кого id выше заданного?
Гречушников
$criteria = new \Doctrine\Common\Collections\Criteria (); $criteria ->where ($criteria->expr ()->gte ('signedIn', $dateFrom)) так или можно как то проще?
Гречушников
@dimmount взываю к тебе
Alexey Mishurovskiy
Гречушников
мне надо сделать обработку большого кол-ва энтити. я вынес в файлик ид последнего обработанного ид. при след запуске это считывается, обрабатывается, записывается. вот и нужно сделать выборку по всем энтити , к которым я еще не ходил
Dmitry
Вот этот вариант
Dmitry
$repo->createQueryBuilder('t')->andWhere('t.id > :id')->setParameter('id', $id)
Гречушников
не вижу в коде как простивить лимит 1000
Гречушников
setMaxResults
Dmitry
угу
Dmitry
Сделай себе в репозитории метод типа findNext($lastId, $limit)
Гречушников
а если упадет? там довольно много. и нет внешних признаков. придется заново прогонять
Dmitry
а сразу поставить на обработку все записи ? зачем перезапускать скрипт ?
Не перезапускать скрипт, а делать порциями по 1000 После каждой тысячи $em->clear()
Dmitry
или даже на каждом цикле
Maxim Kainov
doctrine batch update
Anonymous
Кто с редисом дружит ?