Работа с БД Doctrine + PostgreSQL + XML Mapping | Symfony PHP

Поділитися
Вставка
  • Опубліковано 9 лис 2024

КОМЕНТАРІ • 45

  • @rustam595
    @rustam595 Рік тому +2

    Это лучшее, что есть про симфони из актуального. Спасибо!

  • @LeoMrakobes
    @LeoMrakobes Рік тому +3

    Круто, цікаво, але складно запамʼятати таку структуру вперше використовуючи її, треба більше практики мабуть

  • @ДмитрийБогданов-э5ы
    @ДмитрийБогданов-э5ы 7 місяців тому

    Для меня это целый челендж! Никогда не работал с Symfony (сейчас версия 7), я frontend и использую VS Code.
    И на каждые несколько минут видео у меня уходит полчаса, чтобы разобраться что было сказано, заглянуть в доку и пофиксить баги...
    А еще пришлось догадаться, что для тестов надо создать базу в тестовом окружении и выполнить в нем миграции, выполнив в контейнере:
    ```sh
    php bin/console doctrine:database:create --env=test
    php bin/console doctrine:migrations:migrate --env=test
    ```

  • @fitter2boss72
    @fitter2boss72 2 роки тому +1

    Под последним видео я уже писал, теперь тут :
    Пора выйти из тени! :)

  • @user-ms5pc2vj8u
    @user-ms5pc2vj8u 2 роки тому

    Спасибо!

  • @ardixq
    @ardixq 4 місяці тому

    после проблемы с entity manager я передумал учить симфони

  • @AlejandroYakovlev
    @AlejandroYakovlev  10 місяців тому

    Уроки, менторство - boosty.to/sashokgorshok

  • @Дмитрий-н9у6ж
    @Дмитрий-н9у6ж 7 місяців тому

    Александр, есть две сущности в разных модулях, как их джоинить правильно?

    • @AlejandroYakovlev
      @AlejandroYakovlev  7 місяців тому

      Смотри в сторону ResolveTargetEntityListener

  • @fitter2boss72
    @fitter2boss72 2 роки тому +1

    Почему не используете zenstruck/foundry для фабрикб не нравиться?

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 роки тому +3

      В стремлении придерживаться чистой архитектуры не следует на доменном слое использовать сторонние либы, особенно завязанные на фреймворке.

  • @RottenFoil
    @RottenFoil 2 роки тому +1

    В конструкторе класса User мы явно указываем зависимость, а не интерфейс, который затем будет внедряться через DI для упрощения туториала, или вы находите такой подход избыточным?

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 роки тому

      Вы имеете ввиду UlidService?

    • @yanarrowan8895
      @yanarrowan8895 2 роки тому +3

      Да, почему генерация не в application layer?

    • @Zlobusz
      @Zlobusz 2 роки тому

      Тоже смутил этот момент

  • @DimaTiunov
    @DimaTiunov 6 місяців тому

    А нельзя просто сделать внутри каждого модуля свой composer.json и выполнять в этой папке все операции с установкой зависимостей?

    • @AlejandroYakovlev
      @AlejandroYakovlev  6 місяців тому

      Можно. laravel-modules, например, по такому принципу организован.

  • @super_mr_unknown
    @super_mr_unknown Рік тому +2

    А зачем вообще нужен такой ручной маппинг еще и через xml? Симфони сам прекрасно справляется с маппингом сущностей на базу данных. Или тут какие-то тонкости?

  • @LeoMrakobes
    @LeoMrakobes Рік тому

    в кого було таке? запускаю тест 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`
    всередині контейнера хост резолвиця, зовні - я хз як перевірити що бачить пхп-шторм

  • @fitter2boss72
    @fitter2boss72 2 роки тому

    Почему вы выбрали PostgreSQL , чем он больше подходит неже ли MySQL?

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 роки тому +4

      Особого значения не имеет. Нужно выбирать то, с чем привычнее работать.
      Мне postgres нравится за удобную работу с json и начичие материализованных представлений.
      Он хорош в плане вставок записей, поэтому больше подходит для приложений, где больше write, чем read.
      В общей картине создается ощущение, что он всегда на шаг впереди mysql в плане фич.
      Выбор за каждым :)

    • @fitter2boss72
      @fitter2boss72 2 роки тому

      @@AlejandroYakovlev Я подумал, что вы свяжите это с ULID. ULID - я не понял использует ли он временные метки, чтоб был отсортированным естественным способом , на подобие auto increment?

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 роки тому +1

      Да, ulid имеет временную метку в миллисекундах.

  • @mugen31337
    @mugen31337 Рік тому +1

    Один вопрос. Зачем так геморно настраивать сущности доктрины через xml?
    Почему не через аннотации? Если типа, настраивайте как удобно, то в двойне странно, так как роуты пишем в этом проекте через аннтацию...
    Если типа показать, как можно черз xml... ну такое...

    • @GoogleAcc-z7g
      @GoogleAcc-z7g Рік тому +1

      Вот, кстати, согласен, хоть уроки и хороши, спасибо Александру за них, но некоторые подходы кажутся крайне избыточными и пугающими, особенно для новичков

    • @Александрвистоплясов
      @Александрвистоплясов 11 місяців тому +2

      Сам впервые вижу маппинг через xml и поначалу кажется непривычным и громоздким. Но! Во-первых у xml есть схема, которая в неё подтягивается и удобненько работает автокомплитер, трудно ошибиться или ввести что-то не то. Во-вторых, Александр показывает пример чистой архитектуры в вакууме, доменный слой никоим образом не должен зависеть от реализации БД и системы ОРМ, а просовывая аннотации в класс сущности мы автоматом создаем жесткую связку домена на доктрине. Как альтернатива тут пойдет также PHP маппер, который довольно часто встречается в проектах

  • @dimabaranov1346
    @dimabaranov1346 2 роки тому

    Здравствуйте, при выполнении теста получаю ошибку "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();

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 роки тому

      Попробуйте сбросить кэш:
      bin/console cache:clear
      bin/console cache:clear --env=test
      Убедиться, что указаны верные настройки соединения в файле .env
      DATABASE_URL="postgresql://symfony:symfony@postgres:5432/symfony?serverVersion=13&charset=utf8"
      Пересобрать проект с нуля

    • @dimabaranov1346
      @dimabaranov1346 2 роки тому +1

      @Алексей Беляков Неа, тоже не завелось, пересобирал и под WSL в консольке убунты

    • @travacry
      @travacry 2 роки тому

      ​@@dimabaranov1346 в общих чертах. эта ошибка в конфигурации configure remote = 'Docker', если собирать через 'Docker Compose' будут другие, но их можно победить.

    • @Chernomor48
      @Chernomor48 Рік тому

      Удалось решить проблему?

    • @artuhr9946
      @artuhr9946 Рік тому

      Такая же история при выполнении теста в PHPStorm. В контейнере отрабатывает без ошибки.

  • @eagledev_tank
    @eagledev_tank Рік тому

    Я на уровне жуниор и понимаю где то 25% того что ты делаешь
    Как могу дотянуться до твоего уровня?

    • @mugen31337
      @mugen31337 Рік тому +1

      начни с занстры. перечитывай, пока не поймешь там 80%

    • @eagledev_tank
      @eagledev_tank Рік тому

      @@mugen31337 когда будет ещё видоси

  • @solvex8304
    @solvex8304 2 роки тому

    А качество 720, это только у меня так?

    • @AlejandroYakovlev
      @AlejandroYakovlev  2 роки тому

      Думаю, не только у вас. Качество видео и звука оставляет желать лучшего. Я обязательно поработаю над этим!

    • @solvex8304
      @solvex8304 2 роки тому

      @@AlejandroYakovlev В новых роликах уже всё норм с качеством. Просто я тут столкнулся с такой штукой - был у товарища в гостях, у него все ролики максимум 720, выше нет выбора. Вернулся домой, открыл те же ролики, у меня и 1080 и 1440 есть, а у него почему-то только 720. Так и не поняли причины.

  • @Alexander-dg5id
    @Alexander-dg5id 7 місяців тому

    За xml-маппинг осуждаю.

  • @ЕвгенийЗубков-б7о
    @ЕвгенийЗубков-б7о 2 роки тому

    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"?

  • @Sunsonar
    @Sunsonar Рік тому

    Сашок, благодарю за урок, но у меня ни в Постгресе и не Скллайте не отрабатывает метод 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