Size: a a a

2021 February 18

NS

Ni Shi in PHP
Как тогда получать мне рейтинг поста?
источник

AN

Alexander Nazarov in PHP
Ni Shi
Например ларавел
`return $this->hasOne(Post::class);

тут не особо можно понизить связанность разве нет?
не особо. Но речь же про контексты насколько я понимаю? Если Post в контексте $this то все же норм?
источник

А

Антон in PHP
Ni Shi
Как тогда получать мне рейтинг поста?
$post->rating;

$this->ratings->forPost($post->id);
источник

NS

Ni Shi in PHP
Alexander Nazarov
не особо. Но речь же про контексты насколько я понимаю? Если Post в контексте $this то все же норм?
Речь про то если нам нужно видеть сущности из соседней папки не лучше ли их объявить в родительской
источник

AN

Alexander Nazarov in PHP
Ni Shi
Речь про то если нам нужно видеть сущности из соседней папки не лучше ли их объявить в родительской
эммм.. как то вы не о том мне кажется думаете. Какая разница вам будет, если напишите вы $this->hasOne(Post::class) или напишите вы $this->hasOne(AnotherNamespace/Post::class)

?
источник

AN

Alexander Nazarov in PHP
ну то есть изолированность не строят же только по объектам БД. Ее же строят и на других уровнях тоже.
источник

DT

Dmitriy Tkachenko in PHP
Ni Shi
Как тогда получать мне рейтинг поста?
Ходить в публичный интерфейс модуля рейтинга и просить рейтинг для поста номер такой то
источник

AN

Alexander Nazarov in PHP
тут как бы что Post::class что AnotherNamesapce/Post::class жесткая связанность. Вы этим ее ни как не уменьшили
источник

AN

Alexander Nazarov in PHP
Dmitriy Tkachenko
Ходить в публичный интерфейс модуля рейтинга и просить рейтинг для поста номер такой то
я так полагаю что речь еще и про консистентность в БД стоит. Ему надо типа ОРМ объект построить со связями. Он об этом парится.
источник

NS

Ni Shi in PHP
Alexander Nazarov
эммм.. как то вы не о том мне кажется думаете. Какая разница вам будет, если напишите вы $this->hasOne(Post::class) или напишите вы $this->hasOne(AnotherNamespace/Post::class)

?
Как раз про это. Эти две папки между собой должны максимально мало знать друг о друге и везде это можно решить через интерфейсы но когда мы говорим о связях сущностей тут не подсунуть интерфейсы . Вот я задаюсь вопросом не лучше ли указать эту связь в самой родительской папке тем самым вынести ее из тех двух
источник

DT

Dmitriy Tkachenko in PHP
Ni Shi
Как раз про это. Эти две папки между собой должны максимально мало знать друг о друге и везде это можно решить через интерфейсы но когда мы говорим о связях сущностей тут не подсунуть интерфейсы . Вот я задаюсь вопросом не лучше ли указать эту связь в самой родительской папке тем самым вынести ее из тех двух
А зачем сущностям связь
источник

AN

Alexander Nazarov in PHP
Dmitriy Tkachenko
А зачем сущностям связь
консистентность в БД. Нужно на уровне БД подвтерждать что такая запись реально есть, и связывать ее через внешний ключ
источник

SB

Sergei Baikin in PHP
Ni Shi
Как тогда получать мне рейтинг поста?
Никак не получайте
https://martinfowler.com/bliki/TellDontAsk.html
источник

NS

Ni Shi in PHP
Dmitriy Tkachenko
Ходить в публичный интерфейс модуля рейтинга и просить рейтинг для поста номер такой то
С типизацией (Post $post) рейтинг просить приятнее чем по обезличнному номеру
источник

DT

Dmitriy Tkachenko in PHP
Ni Shi
С типизацией (Post $post) рейтинг просить приятнее чем по обезличнному номеру
проси по PostId(15) не обезличенно достаточно
источник

AN

Alexander Nazarov in PHP
Ni Shi
Как раз про это. Эти две папки между собой должны максимально мало знать друг о друге и везде это можно решить через интерфейсы но когда мы говорим о связях сущностей тут не подсунуть интерфейсы . Вот я задаюсь вопросом не лучше ли указать эту связь в самой родительской папке тем самым вынести ее из тех двух
ну вы где то не туда свернули. То есть построить слабосвязанные модули ограничивая себя каким то выбором ОРМ движка, как это так? Речь не о том как у вас на уровне ОРМ либы будут сущности мапится, а о том на сколько изолированы модули. Задайтесь вопросом, что будет с вашим приложением, если вы вдруг решите заменить ОРМ либу?
источник

NS

Ni Shi in PHP
Alexander Nazarov
ну вы где то не туда свернули. То есть построить слабосвязанные модули ограничивая себя каким то выбором ОРМ движка, как это так? Речь не о том как у вас на уровне ОРМ либы будут сущности мапится, а о том на сколько изолированы модули. Задайтесь вопросом, что будет с вашим приложением, если вы вдруг решите заменить ОРМ либу?
Не указывать связи в самих сущностях, а получать через какие нибудь репозитории которые можно заинтерфейсить?
источник

VC

Vladimir Chernyshev in PHP
Ni Shi
Добрый вечер, допустим у нас есть фреймворк с возможностью разделения на модули. Хотелось бы услышать ваше мнение стоит ли объявлять сущности внутри модулей? Или же объявить их все в "основе"?
не можно, а нужно
источник

NS

Ni Shi in PHP
Vladimir Chernyshev
не можно, а нужно
Прочтите сообщение, там дфиринциальные вопросы, не ясно за что вы ратуете
источник

AN

Alexander Nazarov in PHP
Ni Shi
Не указывать связи в самих сущностях, а получать через какие нибудь репозитории которые можно заинтерфейсить?
ну типа того да. Не работать на прямую с тем что дает ОРМ. ОРМ это какой то один слой из всего. У вас все ровно должны быть какие то доменные объекты. Та же статься  и рейтинги. А вот где они будут хранится и как, это уже второй вопрос. И тут уже если вам нужна консистентность на уровне БД то у вас не будет других выборов как делать типа ->hasOne в вашей орм.
источник