Для меня это целый челендж! Никогда не работал с Symfony (сейчас версия 7), я frontend и использую VS Code. И на каждые несколько минут видео у меня уходит полчаса, чтобы разобраться что было сказано, заглянуть в доку и пофиксить баги... А еще пришлось догадаться, что для тестов надо создать базу в тестовом окружении и выполнить в нем миграции, выполнив в контейнере: ```sh php bin/console doctrine:database:create --env=test php bin/console doctrine:migrations:migrate --env=test ```
В конструкторе класса User мы явно указываем зависимость, а не интерфейс, который затем будет внедряться через DI для упрощения туториала, или вы находите такой подход избыточным?
А зачем вообще нужен такой ручной маппинг еще и через xml? Симфони сам прекрасно справляется с маппингом сущностей на базу данных. Или тут какие-то тонкости?
в кого було таке? запускаю тест 16:45 із контейнера через bash все відпрацьовує, а якщо через PHPStorm - помилка `An exception occurred in the driver: SQLSTATE[08006] [7] could not translate host name "postgres" to address: Name does not resolve` всередині контейнера хост резолвиця, зовні - я хз як перевірити що бачить пхп-шторм
Особого значения не имеет. Нужно выбирать то, с чем привычнее работать. Мне postgres нравится за удобную работу с json и начичие материализованных представлений. Он хорош в плане вставок записей, поэтому больше подходит для приложений, где больше write, чем read. В общей картине создается ощущение, что он всегда на шаг впереди mysql в плане фич. Выбор за каждым :)
@@AlejandroYakovlev Я подумал, что вы свяжите это с ULID. ULID - я не понял использует ли он временные метки, чтоб был отсортированным естественным способом , на подобие auto increment?
Один вопрос. Зачем так геморно настраивать сущности доктрины через xml? Почему не через аннотации? Если типа, настраивайте как удобно, то в двойне странно, так как роуты пишем в этом проекте через аннтацию... Если типа показать, как можно черз xml... ну такое...
Вот, кстати, согласен, хоть уроки и хороши, спасибо Александру за них, но некоторые подходы кажутся крайне избыточными и пугающими, особенно для новичков
Сам впервые вижу маппинг через xml и поначалу кажется непривычным и громоздким. Но! Во-первых у xml есть схема, которая в неё подтягивается и удобненько работает автокомплитер, трудно ошибиться или ввести что-то не то. Во-вторых, Александр показывает пример чистой архитектуры в вакууме, доменный слой никоим образом не должен зависеть от реализации БД и системы ОРМ, а просовывая аннотации в класс сущности мы автоматом создаем жесткую связку домена на доктрине. Как альтернатива тут пойдет также PHP маппер, который довольно часто встречается в проектах
Здравствуйте, при выполнении теста получаю ошибку "Doctrine\DBAL\Exception\ConnectionException : An exception occurred in the driver: SQLSTATE[08006] [7] could not translate host name "postgres" to address: Try again " я так понимаю название контейнера постгреса не воспроинимается как адрес ? Есть ли мысли, как можно поправить? падает на $this->_em->flush();
Попробуйте сбросить кэш: bin/console cache:clear bin/console cache:clear --env=test Убедиться, что указаны верные настройки соединения в файле .env DATABASE_URL="postgresql://symfony:symfony@postgres:5432/symfony?serverVersion=13&charset=utf8" Пересобрать проект с нуля
@@dimabaranov1346 в общих чертах. эта ошибка в конфигурации configure remote = 'Docker', если собирать через 'Docker Compose' будут другие, но их можно победить.
@@AlejandroYakovlev В новых роликах уже всё норм с качеством. Просто я тут столкнулся с такой штукой - был у товарища в гостях, у него все ролики максимум 720, выше нет выбора. Вернулся домой, открыл те же ролики, у меня и 1080 и 1440 есть, а у него почему-то только 720. Так и не поняли причины.
The service "doctrine.migrations.dependency_factory" has a dependency on a non-existent service "doctrine.Migrations.migrations_factory". Did you mean this: "doctrine.migrations.dependency_factory"?
Сашок, благодарю за урок, но у меня ни в Постгресе и не Скллайте не отрабатывает метод add() дебагер доходит до $this->_em->persist($user); сюда фейковые данные приходят, но запись не происходит, тест падает на $this->_em->flush(); и лог пишет Doctrine\DBAL\Exception\DriverException : An exception occurred in the driver: could not find driver, можешь подсказать в чем причина или ктото столкнулся с этой проблемой может быть тоже? root@e1d6e918155a:/application# php -i|grep PDO PDO PDO support => enabled PDO drivers => sqlite PDO Driver for SQLite 3.x => enabled
Это лучшее, что есть про симфони из актуального. Спасибо!
Круто, цікаво, але складно запамʼятати таку структуру вперше використовуючи її, треба більше практики мабуть
Для меня это целый челендж! Никогда не работал с Symfony (сейчас версия 7), я frontend и использую VS Code.
И на каждые несколько минут видео у меня уходит полчаса, чтобы разобраться что было сказано, заглянуть в доку и пофиксить баги...
А еще пришлось догадаться, что для тестов надо создать базу в тестовом окружении и выполнить в нем миграции, выполнив в контейнере:
```sh
php bin/console doctrine:database:create --env=test
php bin/console doctrine:migrations:migrate --env=test
```
Под последним видео я уже писал, теперь тут :
Пора выйти из тени! :)
Спасибо!
после проблемы с entity manager я передумал учить симфони
Уроки, менторство - boosty.to/sashokgorshok
Александр, есть две сущности в разных модулях, как их джоинить правильно?
Смотри в сторону ResolveTargetEntityListener
Почему не используете zenstruck/foundry для фабрикб не нравиться?
В стремлении придерживаться чистой архитектуры не следует на доменном слое использовать сторонние либы, особенно завязанные на фреймворке.
В конструкторе класса User мы явно указываем зависимость, а не интерфейс, который затем будет внедряться через DI для упрощения туториала, или вы находите такой подход избыточным?
Вы имеете ввиду UlidService?
Да, почему генерация не в application layer?
Тоже смутил этот момент
А нельзя просто сделать внутри каждого модуля свой composer.json и выполнять в этой папке все операции с установкой зависимостей?
Можно. laravel-modules, например, по такому принципу организован.
А зачем вообще нужен такой ручной маппинг еще и через xml? Симфони сам прекрасно справляется с маппингом сущностей на базу данных. Или тут какие-то тонкости?
в кого було таке? запускаю тест 16:45 із контейнера через bash все відпрацьовує, а якщо через PHPStorm - помилка `An exception occurred in the driver: SQLSTATE[08006] [7] could not translate host name "postgres" to address: Name does not resolve`
всередині контейнера хост резолвиця, зовні - я хз як перевірити що бачить пхп-шторм
Почему вы выбрали PostgreSQL , чем он больше подходит неже ли MySQL?
Особого значения не имеет. Нужно выбирать то, с чем привычнее работать.
Мне postgres нравится за удобную работу с json и начичие материализованных представлений.
Он хорош в плане вставок записей, поэтому больше подходит для приложений, где больше write, чем read.
В общей картине создается ощущение, что он всегда на шаг впереди mysql в плане фич.
Выбор за каждым :)
@@AlejandroYakovlev Я подумал, что вы свяжите это с ULID. ULID - я не понял использует ли он временные метки, чтоб был отсортированным естественным способом , на подобие auto increment?
Да, ulid имеет временную метку в миллисекундах.
Один вопрос. Зачем так геморно настраивать сущности доктрины через xml?
Почему не через аннотации? Если типа, настраивайте как удобно, то в двойне странно, так как роуты пишем в этом проекте через аннтацию...
Если типа показать, как можно черз xml... ну такое...
Вот, кстати, согласен, хоть уроки и хороши, спасибо Александру за них, но некоторые подходы кажутся крайне избыточными и пугающими, особенно для новичков
Сам впервые вижу маппинг через xml и поначалу кажется непривычным и громоздким. Но! Во-первых у xml есть схема, которая в неё подтягивается и удобненько работает автокомплитер, трудно ошибиться или ввести что-то не то. Во-вторых, Александр показывает пример чистой архитектуры в вакууме, доменный слой никоим образом не должен зависеть от реализации БД и системы ОРМ, а просовывая аннотации в класс сущности мы автоматом создаем жесткую связку домена на доктрине. Как альтернатива тут пойдет также PHP маппер, который довольно часто встречается в проектах
Здравствуйте, при выполнении теста получаю ошибку "Doctrine\DBAL\Exception\ConnectionException : An exception occurred in the driver: SQLSTATE[08006] [7] could not translate host name "postgres" to address: Try again " я так понимаю название контейнера постгреса не воспроинимается как адрес ? Есть ли мысли, как можно поправить? падает на $this->_em->flush();
Попробуйте сбросить кэш:
bin/console cache:clear
bin/console cache:clear --env=test
Убедиться, что указаны верные настройки соединения в файле .env
DATABASE_URL="postgresql://symfony:symfony@postgres:5432/symfony?serverVersion=13&charset=utf8"
Пересобрать проект с нуля
@Алексей Беляков Неа, тоже не завелось, пересобирал и под WSL в консольке убунты
@@dimabaranov1346 в общих чертах. эта ошибка в конфигурации configure remote = 'Docker', если собирать через 'Docker Compose' будут другие, но их можно победить.
Удалось решить проблему?
Такая же история при выполнении теста в PHPStorm. В контейнере отрабатывает без ошибки.
Я на уровне жуниор и понимаю где то 25% того что ты делаешь
Как могу дотянуться до твоего уровня?
начни с занстры. перечитывай, пока не поймешь там 80%
@@mugen31337 когда будет ещё видоси
А качество 720, это только у меня так?
Думаю, не только у вас. Качество видео и звука оставляет желать лучшего. Я обязательно поработаю над этим!
@@AlejandroYakovlev В новых роликах уже всё норм с качеством. Просто я тут столкнулся с такой штукой - был у товарища в гостях, у него все ролики максимум 720, выше нет выбора. Вернулся домой, открыл те же ролики, у меня и 1080 и 1440 есть, а у него почему-то только 720. Так и не поняли причины.
За xml-маппинг осуждаю.
The service "doctrine.migrations.dependency_factory" has a dependency on a non-existent service "doctrine.Migrations.migrations_factory". Did you mean this: "doctrine.migrations.dependency_factory"?
Сашок, благодарю за урок, но у меня ни в Постгресе и не Скллайте не отрабатывает метод add() дебагер доходит до $this->_em->persist($user); сюда фейковые данные приходят, но запись не происходит, тест падает на $this->_em->flush(); и лог пишет Doctrine\DBAL\Exception\DriverException : An exception occurred in the driver: could not find driver, можешь подсказать в чем причина или ктото столкнулся с этой проблемой может быть тоже?
root@e1d6e918155a:/application# php -i|grep PDO
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled