Вадим
это слишком :)
Павел
это слишком :)
Да не, норм. Когда схема сложная или специфичная, то это нормально уходить от автомиграций
Павел
Но текущий флоу скорее костыль который все ломает
Павел
Зачем вам это? сохранить лишний join?
kakoi-to-noob
да, и шо делать
Отдельную сущность завести в которой и будет эта связь лежать
Вадим
Зачем вам это? сохранить лишний join?
сделать в апи платформе роут /projects/{id}/users через ProjectUserRole
Вадим
Сделайте кастомный роут и всё
ну блин, всё так хорошо начиналось :(
Viktor
это слишком :)
А вот это уже находили? https://stackoverflow.com/a/33322813
Павел
сделать в апи платформе роут /projects/{id}/users через ProjectUserRole
Еще на чтение можно такой вариант, но лучше кастомный роут: сделайте вью таблицы и readonly сущности
Павел
Таким образом можно много что менеджить и делать кастомные запросы
Павел
Но это если про чтение говорить
Павел
А вот это уже находили? https://stackoverflow.com/a/33322813
У ТСа нет проблем с маппингом, он использует невалидный для доктрины флоу
Павел
Например есть User Есть Company (у нее user_id как создатель и country_id как страна компании и еще куча полей) и есть Country Вот ТС хочет создать в user проперти m-t-m countries чтобы получить все страны компаний которые он создал при этом именно через маппинг, а не через коллецию companies
Павел
И доктрина не может такое позволить, потому что должна быть возможность в юзера добавить страну, как в обычном m-t-m. Но как такое создать, если это таблица компаний где еще 10 полей, кроме пивот связи
Павел
Точнее миграции не дадут создать, доктрина на самом деле справится с чтением, а на записи скорее всего грохнется с 500
Павел
@vadbard еще вот это можно https://symfony.com/bundles/DoctrineMigrationsBundle/current/index.html#manual-tables но тогда лишитесь автомиграций для центральной таблицы.
Павел
спасибо, но оставлю последним патроном
Хоть несколько сложное приложение всегда будет уходить за возможности rest которые предлагает платформа. Так что лучше сразу начинать осваивать кастом
Вадим
но да
Юра
Так почему доктрина пытается создать таблицу а не обновить
Юра
Может он пытается сделать schema::create
Юра
Просто интересно почему доктрина не пытается её изменить а как бы с нуля создает сразу. Но возможно так работает мэни ту мэни
Рома
как такое может быть один проект база работает, а в другом всё тоже самое нет SQLSTATE[08006] [7] connection to server at "127.0.0.1", port 5432 failed: FATAL: role "app" does not exist
Рома
комнды не работают. docker настроен и env.local
Nikolay
комнды не работают. docker настроен и env.local
Какие команды, выше ошибка потому что роль не создана
Рома
так я и не создавал её
Рома
php bin/console doctrine:migrations:status
Рома
version: "3.9" services: database: container_name: postgres image: postgres:13.3-alpine environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: 12345 POSTGRES_HOST_AUTH_METHOD: trust ports: - "5432:5432" хотел test fixtures потестить сломалось в другом месте
Рома
может это особеность 7.0.6 версии
Михаил
А как выглядит dsn с которой подключаешься?
Рома
что такое dsn
Рома
export DATABASE_DATABASE=postgres export DATABASE_DRIVER=postgres export DATABASE_HOST=127.0.0.1 export DATABASE_NAME=postgres export DATABASE_PASSWORD=12345 export DATABASE_PORT=5432 export DATABASE_SERVER=postgres://127.0.0.1:5432 export DATABASE_URL=postgres://postgres:12345@127.0.0.1:5432/postgres?sslmode=disable&charset=utf8 export DATABASE_USER=postgres export DATABASE_USERNAME=postgres export PGDATABASE=postgres export PGHOST=127.0.0.1 export PGPASSWORD=12345 export PGPORT=5432 export PGUSER=postgres
Рома
почему то нет этих значений export SYMFONY_APPLICATION_DEFAULT_ROUTE_HOST=127.0.0.1:8000 export SYMFONY_APPLICATION_DEFAULT_ROUTE_PATH=/ export SYMFONY_APPLICATION_DEFAULT_ROUTE_PORT=8000 export SYMFONY_APPLICATION_DEFAULT_ROUTE_SCHEME=http export SYMFONY_APPLICATION_DEFAULT_ROUTE_URL=http://127.0.0.1:8000/ export SYMFONY_DEFAULT_ROUTE_HOST=127.0.0.1:8000 export SYMFONY_DEFAULT_ROUTE_PATH=/ export SYMFONY_DEFAULT_ROUTE_PORT=8000 export SYMFONY_DEFAULT_ROUTE_SCHEME=http export SYMFONY_DEFAULT_ROUTE_URL=http://127.0.0.1:8000/ export SYMFONY_PROJECT_DEFAULT_ROUTE_HOST=127.0.0.1:8000 export SYMFONY_PROJECT_DEFAULT_ROUTE_PATH=/ export SYMFONY_PROJECT_DEFAULT_ROUTE_PORT=8000 export SYMFONY_PROJECT_DEFAULT_ROUTE_SCHEME=http export SYMFONY_PROJECT_DEFAULT_ROUTE_URL=http://127.0.0.1:8000/
Михаил
DATABASE_URL=postgres://app:!ChangeMe!@127.0.0.1:32781/app?sslmode=disable&charset=utf8
Рома
# In all environments, the following files are loaded if they exist, # the latter taking precedence over the former: # # * .env contains default values for the environment variables needed by the app # * .env.local uncommitted file with local overrides # * .env.$APP_ENV committed environment-specific defaults # * .env.$APP_ENV.local uncommitted environment-specific overrides # # Real environment variables win over .env files. # # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. # https://symfony.com/doc/current/configuration/secrets.html # # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration ###> symfony/framework-bundle ### APP_ENV=dev APP_SECRET=5d0c85a6b7f04a1d674ca401d1a549a4 ###< symfony/framework-bundle ### ###> doctrine/doctrine-bundle ### # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml # # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" ###< doctrine/doctrine-bundle ###
Михаил
Ну вот
Михаил
Юзер app, вот он и ругается что его нет
Рома
почему его нет?
Рома
я его в первом проекте не создавал
Рома
а настройки там те же подскажи как создать
Михаил
Поэтому его и нет
Рома
Спасибо Тейлор, я не знаю, как бы я на этом занимался разработкой
Михаил
Если это настройки из первого проекта, то вот и пароль и юзернейм. Внеси эти данные в твой dsn
Рома
я думаю новая версия не совместима
Рома
вообще лучше использовать в symfony LTS
Михаил
вот же они
Отлично, а твоя симфа использует эти env для подключения или DATABASE_URL?
Рома
vможешь говорить попроще
Рома
я не знаю о чем ты всё по умолчанию
Рома
как проверить использует или нет?
Михаил
Поиск по всем файлам твоего проекта и вводишь DATABASE_URL
Рома
может проект надо было создать через symfony new
Рома
хотя так и сделал symfony new test_symfony_7 --version="7.*.*"
Рома
Михаил
Ну вот, дальше находишь кто потребляет эту переменную
Михаил
Это доктрина - твоя орм
Рома
а так в рабочей версии
Михаил
убери предикат export перед DATABASE_URL
Рома
нет при запуске миграций
Михаил
если в тестах то создай env.test и добавь туда дсн до базы данных
Михаил
нет при запуске миграций
А слушай, возможно я понял bin/console debug:dotenv
Михаил
Возможно у тебя не грузится .env.local файл, тогда ищи причину
Рома
roman@roman-MaiBook-M:~/tests/fix/test_symfony_7$ bin/console debug:dotenv Cannot load Xdebug - it was already loaded Xdebug: [Log Files] File '/var/log/nginx/xdebug.log' could not be opened. Xdebug: [Step Debug] Could not connect to debugging client. Tried: 127.0.0.1:9003 (through xdebug.client_host/xdebug.client_port). Dotenv Variables & Files ======================== Scanned Files (in descending priority) -------------------------------------- * ⨯ .env.local.php * ⨯ .env.dev.local * ⨯ .env.dev * ⨯ .env.local * ✓ .env Variables --------- -------------- ------------------------------------------------------------------------------ ----------------------------------- Variable Value .env -------------- ------------------------------------------------------------------------------ ----------------------------------- APP_ENV dev dev APP_SECRET 5d0c85a6b7f04a1d674ca401d1a549a4 5d0c85a6b7f04a1d674ca401d1a549... DATABASE_URL postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8 postgresql://app:!ChangeMe!@12... -------------- ------------------------------------------------------------------------------ ----------------------------------- // Note that values might be different between web and CLI. Xdebug: [Step Debug] Could not connect to debugging client. Tried: 127.0.0.1:9003 (through xdebug.client_host/xdebug.client_port). Xdebug: [Step Debug] Could not connect to debugging client. Tried: 127.0.0.1:9003 (through xdebug.client_host/xdebug.client_port). roman@roman-MaiBook-M:~/tests/fix/test_symfony_7$
Рома
да ты прав * ✓ .env.local * ✓ .env
Михаил
да ты прав * ✓ .env.local * ✓ .env
Да это понятно, просто непонятно почему ты к этому сам не пришёл. 1) role "app" does not exist 2) ищем то, что пытается пропихнуть "app" как юзернейм 3) находим DATABASE_URL 4) ищем почему не подгружается нормальная DSN 5) видим что env.local не подгрузилась 6) решаем проблему 7) ... 8) PROFIT
Михаил
тебе с такими вопросами тут не помогут, только у тебя проект на руках
Рома
как решить проблему? её не было раньше
Михаил
Погугли, там может быть много причин и их решений
Рома
странно нельзя выбрать установить 7.0.5