Size: a a a

2020 November 16

НО

Николай Оськин... in symfony
Dima Sikorskiy
так консистентность в помощь и  $post->getAuthorId() === 5
а что в методе ?

public function getAuthorId() {
   return $this->author->getId();
}

так?

Ну ведь тогда доктрина сделает доп. запрос)
источник

DA

Danil Andreyev in symfony
$authorExists = !$postCollection->matching(Criteria::expr()->eq('author', $author))->isEmpty()
источник

DA

Danil Andreyev in symfony
Одним запросом вроде должно пойти на всю коллекцию...
источник

DS

Dima Sikorskiy in symfony
Николай Оськин
а что в методе ?

public function getAuthorId() {
   return $this->author->getId();
}

так?

Ну ведь тогда доктрина сделает доп. запрос)
public function getAuthorId() {
   return $this->authortId;
}
источник

НО

Николай Оськин... in symfony
Максим Федоров
Значит джойн таки надо :) и тогда не будем ленивых запросов
это плохо, что надо.

Так как я пример упростил и эти "посты", уже были приджойнены к чему-то другому. И лишний join не хотелось бы, ибо их уже много получается.

Я надеялся что доктрина умна, и понимает, что если у связанной сущности мы тянем лишь айдишник (который прописан в первой таблице), то она может просто вернуть его из таблицы. А если мы например уже тянем $post->getAuthor()->getName(), то тогда будет делать доп. запрос, так как имя можно вытянуть либо после доп. запроса, либо после джойна.
источник

МФ

Максим Федоров... in symfony
Николай Оськин
это плохо, что надо.

Так как я пример упростил и эти "посты", уже были приджойнены к чему-то другому. И лишний join не хотелось бы, ибо их уже много получается.

Я надеялся что доктрина умна, и понимает, что если у связанной сущности мы тянем лишь айдишник (который прописан в первой таблице), то она может просто вернуть его из таблицы. А если мы например уже тянем $post->getAuthor()->getName(), то тогда будет делать доп. запрос, так как имя можно вытянуть либо после доп. запроса, либо после джойна.
Доктрина умна... по умолчанию есть lazy load

Либо ставьте eager по дефолту
Либо джойните явно
источник

НО

Николай Оськин... in symfony
Dima Sikorskiy
public function getAuthorId() {
   return $this->authortId;
}
то есть у нас есть и поле $author, для которой прописан ManyToOne, и еще поле $authorId, которой будет отображать только айдишник?
источник

DS

Dima Sikorskiy in symfony
Николай Оськин
то есть у нас есть и поле $author, для которой прописан ManyToOne, и еще поле $authorId, которой будет отображать только айдишник?
можно и так. и использовать каждый из методов по надобности
источник

НО

Николай Оськин... in symfony
Максим Федоров
Доктрина умна... по умолчанию есть lazy load

Либо ставьте eager по дефолту
Либо джойните явно
если поставить eager load, то будет во всех остальных случаях (для которых мне этого не надо) делаться этот EAGER
источник

МФ

Максим Федоров... in symfony
Николай Оськин
это плохо, что надо.

Так как я пример упростил и эти "посты", уже были приджойнены к чему-то другому. И лишний join не хотелось бы, ибо их уже много получается.

Я надеялся что доктрина умна, и понимает, что если у связанной сущности мы тянем лишь айдишник (который прописан в первой таблице), то она может просто вернуть его из таблицы. А если мы например уже тянем $post->getAuthor()->getName(), то тогда будет делать доп. запрос, так как имя можно вытянуть либо после доп. запроса, либо после джойна.
Что значит лишний джойн? Как умная орм без джойна по умному данные подтянет? :)
источник

НО

Николай Оськин... in symfony
Максим Федоров
Что значит лишний джойн? Как умная орм без джойна по умному данные подтянет? :)
так мне же айдишник нужен, зачем его подтягивать если он есть в первой таблице? (posts)
источник

МФ

Максим Федоров... in symfony
Николай Оськин
так мне же айдишник нужен, зачем его подтягивать если он есть в первой таблице? (posts)
Не понял
источник

МФ

Максим Федоров... in symfony
Вам сущность не нужна? Ну так геттер не дергайте тогда
источник

НО

Николай Оськин... in symfony
Максим Федоров
Вам сущность не нужна? Ну так геттер не дергайте тогда
не нужна
а как дернуть значение поля?
источник

DS

Dima Sikorskiy in symfony
Николай Оськин
так мне же айдишник нужен, зачем его подтягивать если он есть в первой таблице? (posts)
так просто к нему и обращаться ) нужны лишние данные (лейзи лоад),  нужна сразу коллекция с авторами -  join или настройку о которой написали выше
источник

МФ

Максим Федоров... in symfony
А понял
Ну лучше для чтения не юзайте ORM
Те она затягивает связи, ясен пень... это даже в название ORM указано
источник

МФ

Максим Федоров... in symfony
Доставайте просто данные
источник

МФ

Максим Федоров... in symfony
Object Relation Mapper и как бы вы воздух сейчас не нагнетали — все хорошо

Юзайте др абстракцию для чтения данных... читайте данные и на дто маппьте
источник

НО

Николай Оськин... in symfony
Максим Федоров
А понял
Ну лучше для чтения не юзайте ORM
Те она затягивает связи, ясен пень... это даже в название ORM указано
я этот пример очень упростил

вообще эти posts приджойниваются к другой сущности (в QueryBuilder) по определенной логике, и у приджойненных постов я хочу пройтись по массиву и узнать есть ли автор с определенным id.
Без ORM этот всё самому мапить сложно, так как там куча джойнов, где-то OneToMany, где-то OneToOne
источник

НО

Николай Оськин... in symfony
Максим Федоров
Object Relation Mapper и как бы вы воздух сейчас не нагнетали — все хорошо

Юзайте др абстракцию для чтения данных... читайте данные и на дто маппьте
не замапить такой запрос на DTO просто так
источник