Size: a a a

2020 December 02

ДТ

Дмитрий Тремасов... in Laravel Pro
На самом деле все что делается в цикле можно сделать в запросе. И данные обрабатывать не придётся
источник

P

Phoenix in Laravel Pro
Дмитрий Тремасов
На самом деле все что делается в цикле можно сделать в запросе. И данные обрабатывать не придётся
Выше уже пробовали ему это объяснить, рано пока еще.
источник

P

Phoenix in Laravel Pro
Shotty
$mapped = $listTodoByDays
           ->groupBy('day')
           ->map(function ( $items ){
               
               return $items->groupBy(function ( $todo ){
                   return $todo->designer->name;
               })->map(function ($items){
                   return [
                       'todo' => $items,
                       'avatar' => $items->first()->designer->avatar
                   ];
               });
               
           });
Всё так же с запросами
Для лучшей читабельности можно вынести часть кода в отдельную функцию, а что бы не было запросов выше тебе уже сбросили ссылку. На eager-loading.

А по факту тебе сюда @laravel_web
источник

S

Shotty in Laravel Pro
Вопрос, в первой модели делаю with к модели task - with('task').

А как теперь в самом task модели именно в этом случае сделать with с user?

Я знаю можно в модели protected $with = ['user'] - но это будет для всей модели всего проекта, а мне именно нужно для этого метода. Как можно такое сделать?
источник

В

Владислав in Laravel Pro
Shotty
Вопрос, в первой модели делаю with к модели task - with('task').

А как теперь в самом task модели именно в этом случае сделать with с user?

Я знаю можно в модели protected $with = ['user'] - но это будет для всей модели всего проекта, а мне именно нужно для этого метода. Как можно такое сделать?
Для этого нужно почитать документацию, а не лезть кодить
источник

DZ

Daniil Zobov in Laravel Pro
Есть две модели, пусть будет Book и Author, у Book есть belongsTo(Author::class)

Задача получить список книг, отсортированных по имени автора в алфавитном порядке.

Работа с коллекциями не подходит, считаем что в обеих таблицах по несколько миллионов записей.

Есть вариант рисовать join руками. Но может есть какой-то вариант (или пакет, чем черт не шутит), чтоб это реализовать на чистом Eloquent?
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Shotty
Вопрос, в первой модели делаю with к модели task - with('task').

А как теперь в самом task модели именно в этом случае сделать with с user?

Я знаю можно в модели protected $with = ['user'] - но это будет для всей модели всего проекта, а мне именно нужно для этого метода. Как можно такое сделать?
К самой модели with делать не надо. Надо делать к запросу
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Task::with([‘user’])->get()
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Daniil Zobov
Есть две модели, пусть будет Book и Author, у Book есть belongsTo(Author::class)

Задача получить список книг, отсортированных по имени автора в алфавитном порядке.

Работа с коллекциями не подходит, считаем что в обеих таблицах по несколько миллионов записей.

Есть вариант рисовать join руками. Но может есть какой-то вариант (или пакет, чем черт не шутит), чтоб это реализовать на чистом Eloquent?
Можно через scope join делать
источник

S

Shotty in Laravel Pro
Дмитрий Тремасов
К самой модели with делать не надо. Надо делать к запросу
Сделал with к запросу, как сделать with к следующему запросу?

Например,

$todos = model::with('task');

foreach ($todos as $todo) {
     $todo->task->user - как мне тут вызвать with user? В модели отношение с user есть, но как в данном случае к запросу task сделать with к user?
}
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Daniil Zobov
Есть две модели, пусть будет Book и Author, у Book есть belongsTo(Author::class)

Задача получить список книг, отсортированных по имени автора в алфавитном порядке.

Работа с коллекциями не подходит, считаем что в обеих таблицах по несколько миллионов записей.

Есть вариант рисовать join руками. Но может есть какой-то вариант (или пакет, чем черт не шутит), чтоб это реализовать на чистом Eloquent?
Можно на дурака orderByRaw(‘(select name from authors where author.id = books.author_id’)
источник

В

Владислав in Laravel Pro
Shotty
Сделал with к запросу, как сделать with к следующему запросу?

Например,

$todos = model::with('task');

foreach ($todos as $todo) {
     $todo->task->user - как мне тут вызвать with user? В модели отношение с user есть, но как в данном случае к запросу task сделать with к user?
}
Прочитать документацию
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Shotty
Сделал with к запросу, как сделать with к следующему запросу?

Например,

$todos = model::with('task');

foreach ($todos as $todo) {
     $todo->task->user - как мне тут вызвать with user? В модели отношение с user есть, но как в данном случае к запросу task сделать with к user?
}
With(‘task.user’)
источник

DZ

Daniil Zobov in Laravel Pro
Дмитрий Тремасов
Можно на дурака orderByRaw(‘(select name from authors where author.id = books.author_id’)
Не, это прям грязь
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Через точку можешь обращаться с отношению отношения
источник

В

Владислав in Laravel Pro
Можно дать рыбу, но лучше научиться рыбачить
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Daniil Zobov
Не, это прям грязь
В чем грязь то? Все более менее приличные бд с оптимизируют этот запрос
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Можешь глянуть explain
источник

DZ

Daniil Zobov in Laravel Pro
Грязь в коде
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Сделай scopeOrderByAuthor и вынеси в модель
источник