Дмитрий
вернее понятно что можно вручную вызвать все геттеры и отдать результат в сеттеры, но может есть какой более быстрый и удобный способ
Nikolay
Дмитрий
5.4
Ivan
А почему не хотите User implements UserInterface?
Nikolay
5.4
Вообще в доке видел по секурити. Делают обёртку над юзером и ее используют
Дмитрий
Nikolay
не понял
Вероятно про имплемент в сущности говорит, как раз про костыль
Alexey Mishurovskiy
а что в этом костыльного ?
Дмитрий
дак ентити итак такая class User implements UserInterface
Ivan
Что в этом костыльного?
Дмитрий
maker:user сам создает
Nikolay
Доменная сущность не должна ничего имплементить
Nikolay
Появляются какие то методы getSault, и тд
Александр
Это же не костыль, а базовая функция, ибо все функции symfony по вытаскиванию юзера ожидает что вернутся интрефейс же.... По крайней мере в 6 версии почти везде так
Ivan
У меня правда свой UserInterface, но он наследуется от того UserInterface
Ivan
И проблем нет
Nikolay
Иван
не надо мешать явно доменную сущность и аутентификацию
Nikolay
Иван
Nikolay
https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
Иван
это ж быренько наговнякать, а потом некоторые думают, что это лучшие практики
Дмитрий
Дмитрий
пока что я вижу как быстрое решение это в ентити Project поменять User на UserInterface потому что считаю что так правильнее
Nikolay
Который как раз имплементит интерфейс UserInterface
Дмитрий
секьюрити как раз и возвращает UserInterface тут вопросов нет, а вот maker делает связь по App\Entity\User а не по UserInterface
на самом деле оба правы, потому что я ведь мог в ентити User добавить новых свойств и методов
Anton
Дмитрий
Anton
вот именно эту проблему это и решает
Anton
реализаций UserInterface может быть сколько угодно, но могут быть участки кода в которые умеют работать с определёнными/разными/всеми и т.д
Дмитрий
Anton
в данном случае пока чисто обозначить для IDE и статических анализаторов что здесь может быть только App\Entity\User, если потом ещё что-то появится то на тестах либо упадёт и нужно будет ещё что-то придумывать либо не упадёт и значит всё оки
Дмитрий
до меня дошло )
/**
* @var \App\Entity\User $user
*/
$user = $this->security->getUser();
$data->setUser($user);
да, в таком виде шторм перестал ругаться
Anton
как вариант
Дмитрий
но это костыль, но рабочий, тем более для связи все равно Doctrine использует только идентификатор записи
Дмитрий
будет работать до тех пор пока в голову не стукнет использовать метод или свойство которого нет в UserInterface
Дмитрий
спасибо всем за помощь, но странно что симфони не умеет получать именно App\Entity\User который прошел аутентификацию
Anton
Anton
пока да
Anton
пока один user provider
Nikolay
class User implements UserInterface, PasswordAuthenticatedUserInterface зачем в доке такому учат, непонятно
Дмитрий
Дмитрий
Anton
https://symfony.com/doc/current/security/user_providers.html
Adilet
Всем привет. Знает кто-нибудь как можно исправить генерацию миграции доктрины, когда используешь mysql? Появляется лишняя строчка запроса в секции down с изменением кодировки таблицы, не до конца понимаю. И при чем с каждой генерацией он предыдущую табличку хочет поменять.
Код: https://pastebin.com/TBZwPuUS
Дмитрий
Дмитрий
если проект прям совсем новый и до прода не дошел, тогда проще грохнуть все миграции и снова сгенерить но уже в виде одного файла, профит
Anton
Adilet
Adilet
Adilet
Я обычно на постгресе работал просто, там такой херни не было
Anton
rm -rf var/cache && bin/console doctrine:migrations:diff
Anton
Дмитрий
@t_adil смотри как будто как у тебя?
Adilet
Adilet
Там вот те 3 таблицы, которые он хочет изменить в down
Adilet
У меня симфони 4.4
Adilet
Кстати, забыл сказать. Я работаю в докере и php и mysql лежат в разных контейнерах. Может ли в этом быть дело?
Задорный Копатыч
Anton
doctrine:
dbal:
default_table_options:
charset: utf8
collate: utf8mb4_unicode_ci
Anton
а с таким конфигом?
Adilet
Adilet
Nikolay
Хай, все отсюда убегаеют? https://t.me/symfony_php )