Вадим
это слишком :)
Павел
это слишком :)
Да не, норм. Когда схема сложная или специфичная, то это нормально уходить от автомиграций
Павел
Но текущий флоу скорее костыль который все ломает
Павел
Зачем вам это? сохранить лишний join?
Вадим
kakoi-to-noob
да, и шо делать
Отдельную сущность завести в которой и будет эта связь лежать
Вадим
Павел
Viktor
это слишком :)
А вот это уже находили?
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
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
Михаил
Ну вот
Михаил
Юзер app, вот он и ругается что его нет
Рома
почему его нет?
Рома
я его в первом проекте не создавал
Рома
а настройки там те же
подскажи как создать
Михаил
Поэтому его и нет
Рома
Спасибо Тейлор, я не знаю, как бы я на этом занимался разработкой
Михаил
Если это настройки из первого проекта, то вот и пароль и юзернейм. Внеси эти данные в твой dsn
Рома
Рома
я думаю новая версия не совместима
Рома
вообще лучше использовать в symfony LTS
Михаил
вот же они
Отлично, а твоя симфа использует эти env для подключения или DATABASE_URL?
Рома
vможешь говорить попроще
Рома
я не знаю о чем ты всё по умолчанию
Рома
как проверить использует или нет?
Михаил
Поиск по всем файлам твоего проекта и вводишь DATABASE_URL
Рома
может проект надо было создать через symfony new
Рома
хотя так и сделал
symfony new test_symfony_7 --version="7.*.*"
Рома
Михаил
Ну вот, дальше находишь кто потребляет эту переменную
Михаил
Это доктрина - твоя орм
Рома
Рома
Михаил
Михаил
убери предикат export перед DATABASE_URL
Михаил
Рома
нет при запуске миграций
Михаил
если в тестах то создай env.test и добавь туда дсн до базы данных
Михаил
Возможно у тебя не грузится .env.local файл, тогда ищи причину
Рома
да ты прав
* ✓ .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