
Sergey
26.04.2017
07:03:24

Dinar
26.04.2017
09:14:38
и там есть getRoles
Так он говорит про ACL. А это про RBAC. То есть надо чтобы у каждого пользователя были свои конкретные наборы прав. Типа то может то не может. не привязанные к ролям. То есть прям список разрешений каждого юзера свой.

Sergey
26.04.2017
09:18:07
и тебе решать что именно

Google

Sergey
26.04.2017
09:18:17
а RBAC в симфони есть из коробки

Dinar
26.04.2017
09:18:25
Ну по сути есть.
Но он возвращает таки Roles :)
Понятно что я могу все что угодно вернуть

Sergey
26.04.2017
09:18:39

Dinar
26.04.2017
09:18:49
А вот нет у меня например в системе понятия Roles
Все юзеры

Sergey
26.04.2017
09:18:54
POST_EDITOR - вот тебе роль позволяющая редактировать посты

Dinar
26.04.2017
09:19:10
Да я понимаю. :)

Sergey
26.04.2017
09:19:26
ну так о чем разговор.

Dinar
26.04.2017
09:19:33
А где-то там было написано, что симфони не парсит из коробки без префикса ROLE_

Sergey
26.04.2017
09:19:35
тебе не надо прописывать даже эти "роли" никуда - просто вернул и все

Google

Dinar
26.04.2017
09:19:35
Это про что?

Sergey
26.04.2017
09:19:50
во всяком случае с версии 2.6 и появления воутеров вообще никаких проблем небыло с организацией этого говна
проще потратить 10 минут и провести эксперемент чем строить домыслы

Dinar
26.04.2017
09:21:26
Ну я понял тебя. Спасибо. Здравая идея.

Daniel
26.04.2017
09:56:50
Ребята, а примерно так норм ли делать:
article_repository:
class: AppBundle\Repository\ArticleRepository
factory: 'entity_manager:getRepository'
arguments: 'AppBundle:Article'
?

Dinar
26.04.2017
10:00:46
А еще кстати можно не через factory делать
arguments:
- "@=service('doctrine').getRepository('AppBundle:Article')"

Daniel
26.04.2017
10:03:19
Это какая версия SF?

Dinar
26.04.2017
10:04:03
Любая вроде как
Ну из последних
Я не могу точно сказать, когда это появилось

Daniel
26.04.2017
10:05:02
Смотрится как то страшно конечно

Dinar
26.04.2017
10:11:37
По-моему намного более чиабельно чем с фабрикой.
Но на самом деле раньше фабрика эта выглядела еще страшнее ))

Sergey
26.04.2017
10:16:59

Ivan
26.04.2017
10:18:16
привет всем.
как вы относитесь к денормализации данных на уровне сущности (например, user->firstName, user->lastName, user->fullName) ?

Dinar
26.04.2017
10:18:37

Daniel
26.04.2017
10:18:47

Ivan
26.04.2017
10:18:56
это нормально или лучше такого избегать?

Dinar
26.04.2017
10:19:02
Разве? :)

Google

Dinar
26.04.2017
10:19:07
Зачем его мокать?
У меня в DI уходит репозиторий
Мокаешь. Дизейблишь конструктор и прописываешь, что методы возвращают

Sergey
26.04.2017
10:19:56
Нет, в этом случае тоже как я понимаю один, это два варианта одного и того же, дело вкуса

Daniel
26.04.2017
10:20:13
Ну он вроде про случай, когда внедряется менеджер, а с него берутся репозитории в сервисе

Dinar
26.04.2017
10:20:32

Sergey
26.04.2017
10:20:48

Dinar
26.04.2017
10:21:24
Потому что на практике преимуществ не вижу

Daniel
26.04.2017
10:22:19

Sergey
26.04.2017
10:25:29
во-первых у тебя репос не всегда будет репосом доктрины. это может быть просто сервис, который принимает em себе
во-вторых @article_repository и в 3.3 симфони @AppBundle\Repository\ArticleRepository куда проще писать, чем каждый раз делать экспрешен
для особых любителей юзать контейнер в контроллерах тоже не очень удобно и придется как и раньше юзать doctrine get repository
ну и я не уверен что IDE будет нормально поддерживать такие конструкции в плане поиска использований, выводить тип и тд

Dinar
26.04.2017
10:27:27

Dinar
26.04.2017
10:27:32
Вот хоть раз пришлось?

Sergey
26.04.2017
10:27:41
дело не в смене орм

Dinar
26.04.2017
10:27:42
Я за 10 лет ни разу такого не сделал.

Sergey
26.04.2017
10:27:51
а то что репосу может понадобится какая-то зависимость

Dinar
26.04.2017
10:28:11
ты про репо как сервис имеешь ввиду

Sergey
26.04.2017
10:28:11
ну и в принципе рекомендуется делать репос именно так
да

Dinar
26.04.2017
10:28:29
Так может тогда это должен быть не репос а сервис лучше?

Google

Dinar
26.04.2017
10:28:31
Отдельный

Sergey
26.04.2017
10:29:18
это может быть репос, с каким-то особым гидратором или еще чего

Dinar
26.04.2017
10:29:54
Ну я понял.
Спасибо. :)

Ivan
26.04.2017
10:38:33

Dinar
26.04.2017
10:38:57
Так метод лучше.
Зачем дублировать данные.
Потом поддерживать соответствие

Sergey
26.04.2017
10:39:27
конечно же метод

Ivan
26.04.2017
10:39:29
а если нужен фильтр по полному имени в списке пользователей, например?

Admin
ERROR: S client not available

Sergey
26.04.2017
10:39:45
в мускуле можно конкатенацию делать)

Ivan
26.04.2017
10:39:48
строить его через concat в sql
а если логика сложнее, чем конкатенация?
а если нужен список пользователей, с показом полного имени?
мне сущности гидрировать придётся

Sergey
26.04.2017
10:43:00
это сложнее чем конкатенация?

Ivan
26.04.2017
10:43:12
нет, это другой момент
чтобы выполнить $user->getFullName()
хорошо, а хранение количества элементов в коллекции в отдельном поле - это нормально, или так тоже лучше не делать?

Google

Ivan
26.04.2017
10:51:44
как вариант, можно всё через отдельную read model сделать, и обновлять её при обновлении юзера

Sergey
26.04.2017
10:52:47
все по ситуации нужно смотреть. где-то лучше метод, где-то лучше в preUpdate склеивать, а где-то вообще не юзать сущности

Denis denya Voskoboinik
26.04.2017
10:56:08
а еще можно прикрутить что-то типа эластика, для удобной агрегации большого кол-ва данных
а то хранение кол-ва эелементов внезапно где-то поломается

Ivan
26.04.2017
10:56:46
да, норм вариант, отдельная read model

Denis denya Voskoboinik
26.04.2017
10:56:53
и не будешь знать когда это произошло

Ivan
26.04.2017
10:56:54
можно elastic
а эластик проигрывает по быстродействию mysql на простых запросах типа "select * from user" ?

Dinar
26.04.2017
11:25:35
Так не отдельно эластик а вместе с мускл :) Где такой простой - делай прямой мускл запрос :)

Ivan
26.04.2017
11:30:43
это понятно, а полностью перевести все чтение на эластик - это лишнее?

Dinar
26.04.2017
11:31:05
Я думаю, это неверно

Ivan
26.04.2017
11:31:15
почему?

Dinar
26.04.2017
11:31:15
Это как перевести все на хранение в Memcache :)
Эластик - это по своему принципу - кэш

Ivan
26.04.2017
11:32:32
то есть, данные могут потеряться?)

Dinar
26.04.2017
11:32:39
То есть, как мне кажется, он не должен быть единственным хранилищем данных
Ну он же создан чтобы полнотекстовый поиск обеспечивать.
Кэш - это такая штука, которую ты должен мочь в любой момент инвалидировать и перекэшировать.

Ivan
26.04.2017
11:33:46
так я могу
основной сторадж - sql бд
elasticsearch только для чтения
ну то есть вывести список юзеров, для этого использовать эластик
чем плохо?