Null
Ну блин. КЛассическая сущность без обвесов в элоквенте namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { }
Null
Вот какие поля есть у юзера? Я в доктрине в бд вообще могу не лазить. Открыл класс - почитал, все понял.
The Ant
https://dev.to/verystrongfingers/part-3-100-eloquent-sucks-1k45 Вместо элоквента можешь любую AR подставить)
буду рад, если покажешь как в говнодоктрине сделать такое: $books = Book::with(['author', 'publisher'])->get(); https://laravel.com/docs/9.x/eloquent-relationships#eager-loading-multiple-relationships
Null
BookWithAuthorAndPublisherDto
Null
Ну либо потрахаться и написать кастомный маппер (не хочу)
The Ant
Выбрать отдельно и слепить в Response DTO
вот вот, начинается дрочка по склеиванию вручную в коде
Null
Я луше в коде склею и все будет читабельно именно через код.
The Ant
комментарии пиши к классу, и там указывай доступные поля
Null
:D здоооровааа. А еще миграции ручками.
Null
И нидай бох в блупринте ошибся.
The Ant
оно хоть и магия, но магия полезная. вместо тысячи строк боилерплейта всратого всего несколько в квери билдере
Null
Ну и это. $user->{вот тут моя IDE обосралась, ведь это ларавел} Против $user->get{Phone|Name|Mail|SiskiIlicha}()
The Ant
:D здоооровааа. А еще миграции ручками.
как будто не побежишь искать все склейки не править там изменившиеся данные 😄
Null
Ну и это. $user->{вот тут моя IDE обосралась, ведь это ларавел} Против $user->get{Phone|Name|Mail|SiskiIlicha}()
Laravel Idea не предлагать. Laravel-ide-helper тоже. Первое очень платное, второе - нихрена не панацея.
Vlad
ЗАТО УДОБНО, КЛАЦ , КЛАЦ И ГОТОВО))
The Ant
дык да, зачем дрочиться, когда можно этого не делать )
The Ant
я вот пару месяцев назад всерьез задумался заташить эктив рекорд рядышком с доктриной в симфу, но потом решил всё-таки вручную клеить релейшены. Говно говна конечно, но похеру.
The Ant
Эм. Пишешь аргументы в конструкторе и делаешь себе
что делаешь? какие аргументы? я твоя не понимать
Null
Кстати да. А что мешает через query builder сделать джойны?
Null
Если там вдруг связь двусторонняя.
Юра
new Book(author: ..., publisher: ...)
The Ant
Кстати да. А что мешает через query builder сделать джойны?
неполучится, если нужен фильтр, а не просто запись по иду
Null
new Book(author: ..., publisher: ...)
with это про eager подгрузку связанных сущностей.
Null
$user->getSubscriptions() - lazy, ->leftJoin(u.subscrbtions, s) - eager
Юра
Это че везде писать виз?
Юра
Везде где книга нужна?
Юра
Такое..
The Ant
нет, только где нужны решейшены
Igor
я вот пару месяцев назад всерьез задумался заташить эктив рекорд рядышком с доктриной в симфу, но потом решил всё-таки вручную клеить релейшены. Говно говна конечно, но похеру.
Ну тоже самое испытывал в обратную сторону. Тестить этот ваш актив рекорд невозможно, дата маппер в разы в этом плане удобнее
Igor
Это Я про юниты, если что
The Ant
Ну тоже самое испытывал в обратную сторону. Тестить этот ваш актив рекорд невозможно, дата маппер в разы в этом плане удобнее
датамапер хорош для добавления\изменения записей. Можно описать правила и связи. Но для чтения списков всяких это бесполезная говнина
Igor
Ну тоже самое испытывал в обратную сторону. Тестить этот ваш актив рекорд невозможно, дата маппер в разы в этом плане удобнее
Да и к тому же, в дата мапере идет какое-никакое разделение слоя работы с базой, делать подобное с актив рекордом не совсем корректно
The Ant
$books = Book::with(['author', 'publisher', 'poster', 'genres'])->get(); вот тут я в 1 строчку выгребу записи с релейшенами сразу. Причем могу добавить фильтров без проблем через ->where() С доктриновским квери билдером такое не получится, надо отдельно дергать списки релейшенов и в коде джойнить. С голым скулом просто охуеешь, если фильтр будет сложный )
Сергей
почему не сделаешь ->select('book, publisher, poster, genres') ->from ('book') ->join( book.publisher, publisher) и тд и where заработает ->where('publisher.name = 'aaa');
The Ant
доктрина пытается всё в 1 запрос впихнуть, если у тебя фильтр будет с джойном, и решейшены с джойном, то случится факап
Сергей
а должны быть во сколько запросов?) если ты просишь вернуть ВСЕ сразу
The Ant
в 1 запрос основное по фильтру, и отдельно по запросу на релейшены
The Ant
склеить у себя там гдето в коде. Чтобы мне в ручную этого не делать
Сергей
нужно отдельно по запросу на релейшены - убираешь select() нужно все сразу - дбавляешь в select все остальное нормально работает. типовая же вещь
The Ant
в чем смысл тогда?
Юра
Не понятно что тебе нужно
Сергей
зачем что то клеить?) я просто аналог запроса with на доктрине скинул, потому что ты сказал, так нельзя в доктрине - можно да, не в одну строчку, но можно
Юра
Dql можно в одну строчку )
The Ant
Получше же да? чем чем недоразумение с ручным присоединением релейшенов :D
The Ant
вот я делал тогда такую хрень, но она забагованая, там на фильтрах дичь происходит с рандом цифрами в каунтере и результаты на ктраницах вообще хер пойми какие
Сергей
hydrate array
The Ant
hydrate array
от этого джойны сломаются, или что?
Юра
С какими фильтрами происходит фигня?
Сергей
это я к тому, что результат итоговый будет плавать от one to many например)
Сергей
гидрацаия в массив - это просто результат запроса, и да - тут все ручками придется делать
Юра
А зачем эти все партиал селекты?
Сергей
короче тут в другому проблемы, если коротко, не в доктрине
Юра
Почему не сериализатор?
The Ant
А зачем эти все партиал селекты?
затем что не все данные от сущностей нужны, а частично
The Ant
Почему не сериализатор?
зачем? ради чего? )
Юра
Ну есть сериализатор и группами может выдать массив с определенными полями
Юра
А если нужно просто массив то ну да партиал. А твой ларавель что вернет?
The Ant
да нафиг тот сериализатор, если это работает. Но оно работает только если взять по иду
The Ant
на списках там ад и израиль
Юра
Ну вот ты пример скинул на ларавеле
Юра
with
Юра
Какие поля он вернёт?
Konstantin
блин, хорси, а можно банить тут за пиздёж про ларавель, питон и прочую, совершенно не симфони-релатед херню?
The Ant
все, но я там могу выбрать то что нужно в этом витч
Konstantin
ну заели эти детские тёрки вечно, трите там где-нибудь еще, оставьте это место для дискуссий чисто по симфони
Юра
Ну так же ты выбираешь что нужно в select
Юра
В чем блин разница
The Ant
В чем блин разница
разница в том, что в ларе это бует работать, с любыми фильтрами, а в доктрине нет. потому что лара тянет релейшены отдельно. и клеит их в недрах эктив рекорда. А симфа всё в 1 запрос собирает, и оно хуй пойми как работает
Юра
Написал просто псевдоприсем на ларавеле и полный пример на доктрине
Юра
Напиши полный на ларавеле
Юра
С нужными полями
Юра
В одну строку
Юра
Со всеми связями