Anonymous
скоуп можно или макрос билдера можно
что за макрос? типа отдельный класс который с запросом тупо работает?
Павел
можно в lumen, получить stream, из storage?
Maksim (Ellrion)
что за макрос? типа отдельный класс который с запросом тупо работает?
а да про отдельный класс (квери обжект) я и забыл. но нет макрос это просто возможность запихать в билдер метод "налету" https://github.com/laravel/framework/blob/5.6/src/Illuminate/Database/Query/Builder.php#L23 https://github.com/laravel/framework/blob/5.6/src/Illuminate/Support/Traits/Macroable.php
dmi
ну а какой выход если к примеру было бы 100000 записей ) Серьезно, давайте подумаем глобально
->with(['staffGroupRight' => function($query){ return $query->take(10); }]) а так точно не работает?
Maksim (Ellrion)
точно)
dmi
public function posts() { return $this->hasMany('App\Models\Post', 'cat_id')->take(4); }
Anonymous
вот так должно точно заработать )
ну во первых если бы заработало, то заработало опять же в цикле, а во вторых не должно это работать (проверил)
dmi
лааадно
dmi
тогда открываю последний
dmi
ну точно рабочий вариант
dmi
$users = \App\User::all(); $users->each(function($user) { $user->load('onlyFiveBooks'); });
dmi
нет )
Игорь
Че это, нет
dmi
ну проверь
Игорь
Я знаю что должно работать
Игорь
Это самые азы лары
dmi
Это самые азы лары
как хорошо что ты пришел и все решил...
Игорь
Если у тебя не работает, значит ты накосячил с релейшинами
Игорь
Аааа, я понял про что вы
Айбек
сперва напишите на голом sql такую выборку)
Айбек
как зачем? они пытаются в два запроса сформировать 10 постов с 3 комментами каждый
Anonymous
$users = \App\User::all(); $users->each(function($user) { $user->load('onlyFiveBooks'); });
проблема в том что это не решает задачу.. Где тут limit?
dmi
public function onlyFive() { return $this->hasMany('App\Models\Post', 'cat_id')->take(5); }
Айбек
ну вот если лара не умеет этого, значит надо самому лул
Игорь
проблема в том что это не решает задачу.. Где тут limit?
Сделай ты двумя запросами и не парься
dmi
Сделай ты двумя запросами и не парься
а азами лары не справится?
Айбек
почему в два?
ты читал сообщения ? или просто спрашиваешь?
SarcasmIO
офк читал
SarcasmIO
просто люблю проигрывать с челов
Игорь
а азами лары не справится?
Я не хочу тестить, впадлу. Мб и справится 🤷‍♂
Айбек
мне кажется тебе надо бан дать, тролю
SarcasmIO
может и надо, хз
SarcasmIO
от этого твои советы лучше не станут, это точно
Айбек
то что я сказал что лимит не работает на релейшн - это не лучше? а то тут пытаются "чтобы заработал"
Айбек
знал бы, сказал бы)
Айбек
я предлагаю ручками sql написать, попробовать, чтобы в цикле не работать но как выше сказали, тяжко такой sql написать для меня лично тяжко)
Maksim (Ellrion)
Это самые азы лары
значит ты их плохо знаешь
Айбек
можно написать так hasOne() три раза и в итоге 4 запроса))
Maksim (Ellrion)
можно написать так hasOne() три раза и в итоге 4 запроса))
как ты для каждого hasOne укажешь что не брать то что уже взял другой? фигню ты написал
Maksim (Ellrion)
еще раз эта задача не столько по ларе сколько по sql
Maksim (Ellrion)
и в sql в постгресе например она решается через оконную функцию
Maksim (Ellrion)
в мускуле там вообще беда
Айбек
ну например hasOne()->orderByDesc('id') hasOne()->orderByDesc('id')->offset(1) hasOne()->orderByDesc('id')->offset(2) так не будет?)
Игорь
Попробуйте через курсор, может?
Anonymous
Себастьян
Подскажите по Mix, делаю: require('bootstrap/js/dist/tooltip'); require('bootstrap/js/dist/popover'); а в консоли получаю "Uncaught ReferenceError: Tooltip is not defined"
Maksim (Ellrion)
ну например hasOne()->orderByDesc('id') hasOne()->orderByDesc('id')->offset(1) hasOne()->orderByDesc('id')->offset(2) так не будет?)
к сожалению нет. оффсет один на всю выборку. жадная загрузка это один запрос для всех моделей т.е. where in() ну вот и сам теперь реши
Aliaksandr
подскажите как в blade сделать такие дивы с кодом?
Anonymous
https://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/
Anonymous
Короче вот этот кровавый запрос )
Айбек
какой нить эдитор с подсветкой синтаксиса
Maksim (Ellrion)
Короче вот этот кровавый запрос )
а вот на постгресе SELECT * FROM ( SELECT *, row_number() OVER (PARTITION BY post_id ORDER BY created_at DESC ) as __num FROM comments WHERE post_id IN (....)) as t where __num <= 3 ORDER BY created_at DESC
Maksim (Ellrion)
работает кстати очень быстро
Maksim (Ellrion)
ща покажу цифры. достаточно впечетляющие)
Айбек
где цифры, Максим?)
Айбек
3 минуты походу выполняется этот запрос))
Айбек
впечатляет однако))
Maksim (Ellrion)
Anonymous
впечатляет однако))
фотошоп все оптимизирует
Anonymous
эммм
Anonymous
120мс?
Maksim (Ellrion)
таблица оружия - 72 312 075 записей (count за 1min20s) таблицы юзеров - 8 395 346 записей (count за 2min) интересующий нас запрос 123милисекунды)
Maksim (Ellrion)
неболее чем по 3 оружия на 10 юзеров зарание выбранных
Айбек
чем ты там занимаешься?)
Maksim (Ellrion)
геймдев)