Вадим
а зачем where писать, доктрина все за тебя сделает
Ну если у тебя запросы простые, которые выписываются в dql, когда тебе пофиг на перформанс по гидрации, и что это тяжёлый процесс, если ты не думаешь о перспективе, значит проджекты не сложные ... Тогда нет смысла этим заморачиватся
Евгений
Ну как минимум регистрация админа не общедоступная как у юзера, в основном у пользователя требуют подтверждение почты, итд.
у пользователя есть роли, в зависимости от этого их можно по-разному регистрировать и авторизировать
Вадим
Ну тоесть разделенное обобщить проще, чем разделить обобщенное ;)
Вадим
Смотря как оно обобщено )
Я имел ввиду наследование
Вадим
Без конкретного примера детали реализации нету смысла обсуждать
Maxim Kainov
Я имел ввиду наследование
Поэтому лучше композиция по возможности
Сергій 🍉
Ну если у тебя запросы простые, которые выписываются в dql, когда тебе пофиг на перформанс по гидрации, и что это тяжёлый процесс, если ты не думаешь о перспективе, значит проджекты не сложные ... Тогда нет смысла этим заморачиватся
ну мы же не знаем какая задача? плохо если у человека проект достаточно сложный, а он симфони чате такие вопросы задает.. это в любом случае плохо и никак ты не поможешь. мне кажется, тут по дефолту проект из серии бложик или познакомится с симфони.
Вадим
Поэтому лучше композиция по возможности
Возможность есть всегда, но тут надо думать, а думать больно ;)
Maxim Kainov
Ну хорошо. А если сделать сущность юзер с одним полем айди, а остальные наследовать от нее?
Сергій 🍉
😃
Сергій 🍉
Ну хорошо. А если сделать сущность юзер с одним полем айди, а остальные наследовать от нее?
как раз то о чем я писал, что больше общего или различий.. вот и думай.
Maxim Kainov
Зачем наследовать?)
Чтобы был у всех уникальный айди
Вадим
Ему пофиг, хоть на фронте генерируй ;)
Maxim Kainov
Ему пофиг, хоть на фронте генерируй ;)
Тогда можно делать разные сущности и юзать трейты )
Вадим
Maxim Kainov
Ох...и трейты еще ;)
Можно и не юзать )
Maxim Kainov
Вот только какие сложности могут появиться, если вот так все разделить
Сергій 🍉
мне кажется плохо делать как всегда и не задаваться вопросами, а как можно сделать лучше)
сначала надо сделать, чтоб работало. я и не говорю, что вот мой совет в 100 % случае верный. но если не знаешь как сделать, то попробуй и этот вариант, завести будешь проще и быстрее. а что лучше для твоего проекта, кто ж тебе тут скажет?
Евгений
отсюда и возник вопрос, кто как предпочитает делать
Maxim Kainov
отсюда и возник вопрос, кто как предпочитает делать
Думаю, что обобщить проще, а разделять стоит, если есть в этом смысл
Евгений
сколько людей, столько и мнений, всегда интересно узнать другую точку зрения, а применять или нет, все зависит от ситауции
Сергій 🍉
проблем с тем что бы это работало никогда не было, но это не значит что нет лучшего решения)
я не понимаю с чего ты взял, что я отговариваю тебя сделать лучше и уговариваю делать как всегда? мой совет не имеет преимуществ? он не может сделать твой проект лучше?
Вадим
pubf publishPost(Admin $publisher) Или pubf publishPost(User $publisher){ if ($publisher->isAdmin())
Вадим
И такие if по всему коду будут ;)
Сергій 🍉
pubf publishPost(Admin $publisher) Или pubf publishPost(User $publisher){ if ($publisher->isAdmin())
с чего ты взял? может в контексте поста роль юзера не имеет значения
Вадим
с чего ты взял? может в контексте поста роль юзера не имеет значения
пост тут вообще ни при чем, можешь метод назвать something ;)
Maxim Kainov
И такие if по всему коду будут ;)
На каждое отличие по лишнему ифу
Евгений
pubf publishPost(Admin $publisher) Или pubf publishPost(User $publisher){ if ($publisher->isAdmin())
работаем с Admin и вытаскиваем $admin->getUser() если нужно
Сергій 🍉
пост тут вообще ни при чем, можешь метод назвать something ;)
короче уже придумали всю бизнес логику.. мда и использование дискриминации тебе вообще никак не мешает писать publishPost(Admin $admin)
Сергій 🍉
так еще раз.. я не топлю за совершенство использования дискриминации, я лишь предложил один из вариантов. часто он очень жизнеспособен. а тут сразу начали тапками закидывать ))
Сергій 🍉
Репорты вы как пишете? Через dql?
кто мы? какие репорты?
Вадим
кто мы? какие репорты?
Ну ты как ты репорты у себя в апликухах делаешь?
Maxim Kainov
Я о том что это костыль ;)
Зависит от задачи
Сергій 🍉
Я о том что это костыль ;)
никто ж не против. но это костыль из коробки. а например, UserInterface избыточен, но что делать. писать свой фреймворк?
Вадим
Зависит от задачи
Придумай задачу которая оправдает ;) Мне реально интересно
Сергій 🍉
> Ну ты как ты репорты у себя в апликухах делаешь? разные проекты разные ребования, иногда dql, иногда нет
Maxim Kainov
Придумай задачу которая оправдает ;) Мне реально интересно
Любая простая задача, где не нужно много полей
Сергій 🍉
Ну если б писал на sql то понимал бы, что sti будет больше мешать
в это случае не надо sti использовать, но с чего ты взял что у человека есть такой кейс?
Вадим
в это случае не надо sti использовать, но с чего ты взял что у человека есть такой кейс?
Да в том что разные данные в одной реляционной таблице это плохо
Вадим
Как он будет мешать?
Тебе как минимум надо не забывать про обязательное where, и какие поля к какой сущности относятся
Сергій 🍉
Придумай задачу которая оправдает ;) Мне реально интересно
1. надо сделать просто и быстро (проект простой)
Сергій 🍉
Вадим
данные не разные, а почти одинаковые ))
Нету, понятия почти ;) false почти true ;)
Maxim Kainov
Да в том что разные данные в одной реляционной таблице это плохо
А если надо будет сделать связь в какой нибудь сущности к любому из юзеров, как это сделать?
Maxim Kainov
В доктрине
Maxim Kainov
Например updatedBy
Maxim Kainov
Юзер это юзер, админ это админ
Например запись в блоге может менять админ, бородатый админ, манагер, юзер и все остальные
Вадим
Например запись в блоге может менять админ, бородатый админ, манагер, юзер и все остальные
Я б сделал еще одну сущность Author и ликовал бы посты к ней, по логике пост не должен знать ничего о юзере, админе и прочем.
Сергій 🍉
Нету, понятия почти ;) false почти true ;)
ой короч.. надоел. есть задача, ищешь решение. не лучшее с точки зрения теории решение бывает наиболее подходящим. это называется КОМПРОМИС. у меня в проекте частенько дискриминация присутствует и НИКАКИХ проблем. потому что в там где мы ее используем нам не нужны кейсы, проявляющие ее недостатки (raw sql, if/else логика и т.д.)
Сергій 🍉
А в author как сделаешь эту связь?
ну а в автор уже точно через дискримнацию 😆
Вадим
Author::createFromAdmin(Admin $admin) { $author = new static(); $author->name = $admin->name(); return $author; }
Вадим
Вадим говорит, что нет таких случаев, когда есть смысл применять такой вариант
Я говорю о том, что нет таких случаев когда не возможно избежать sti
Maxim Kainov
Я говорю о том, что нет таких случаев когда не возможно избежать sti
Избежать можно, но какими усилиями, и будут ли они оправданы?
Сергій 🍉
Author::createFromAdmin(Admin $admin) { $author = new static(); $author->name = $admin->name(); return $author; }
а кто спорит? всегда можно сделать как-то по-другому. но зачем? всегда ли это оправдано?
Сергій 🍉
Coupling and cohesion
всегда ли это оправдано?
Maxim Kainov
Author::createFromAdmin(Admin $admin) { $author = new static(); $author->name = $admin->name(); return $author; }
Но так ты уже не сможешь через орм работать со связями
Вадим
Вадим
всегда ли это оправдано?
Да, чем ниже связанность тем легче модификация кода
Вадим
Если у тебя меняются поля в юзере, то оно не должно затрагивать посты