Size: a a a

2021 May 11

DD

Den Den in Laravel Pro
Спасибо всем
источник

ГА

Грачик Абдулошвили... in Laravel Pro
парни, помогите с Пагинацией и сортировкой в рамках контроллера.
источник

ГА

Грачик Абдулошвили... in Laravel Pro
public function index(){
       $dialogs = collect(Dialog::getAllSupportDialog())->sortBy(function ($dialog) {
           return $dialog->latestMessage()->is_read();
  });

       $data['dialogs'] = CollectionHelper::paginate($dialogs, 15);
       $data['page_title'] = 'Dialogs';
       $data['authUser'] = Auth::user();
       $data['data'] = [
           'sitename' => $this->sitename
       ];
       return view('moder.dialogs.all',$data);
   }
источник

ГА

Грачик Абдулошвили... in Laravel Pro
Эта страница списка ДИАЛОГОВ, внутри которых есть сообщения. Так вот если в каком то диалоге есть нвоое непрочитанное сообщение то этот диалог должен отображаться выше всех. Это работает но БЕЗ соблюдения страниц... то есть диалог с непрочитанным сообщения всегда в верху но он может оказаться на 2ой, 4ой страницы, как ему угодно... А должен быть именно в верху Первой.
хотелось бы эту коллекцию обработать дополнительно в контроллере чтобы страницы соблюлись )
источник

ГА

Грачик Абдулошвили... in Laravel Pro
я просто не понимаю ПОЧЕМУ такое вообще получается... вроде же на первый взгляд все нормально сортируется и диалог с непрочитанным сообщением должен быть выше всех и на первой странице... но почему то иногда перескакивает на другую.. как так.
источник

ГА

Грачик Абдулошвили... in Laravel Pro
может быть между $dialogs=  и $data['dialogs'] =   еще какую то доп. сортировку произвести нужно?))
источник

DW

Dev Wolk in Laravel Pro
А ты пробовал добавить сортировку на уровне БД, ошибка остаётся?
источник

ГА

Грачик Абдулошвили... in Laravel Pro
ты имеешь в виду доп. поля в БД ввести? ну этот как крайний вариант не хотелось бы к нему пребегать так как много тогда изменений вносить
источник

ГА

Грачик Абдулошвили... in Laravel Pro
мне кажется должен быть способ дополнительно их выстроить в ряд перед отправкой в $data['dialogs'] = CollectionHelper::paginate($dialogs, 15);
источник

T

TeslaFeo in Laravel Pro
Ну у тебя должен быть какой то флаг о "непрочитанности" сообщения. На уровне запроса его нужно приджоинить, если он в другой таблице, и сортировать в первую очередь по нему
источник

ГА

Грачик Абдулошвили... in Laravel Pro
return $dialog->latestMessage()->is_read();
источник

ГА

Грачик Абдулошвили... in Laravel Pro
public function latestMessage()
   {
       return $this->messages->last();
   }
источник

ГА

Грачик Абдулошвили... in Laravel Pro
вот так табилца мессаджес выглядит-
источник

ГА

Грачик Абдулошвили... in Laravel Pro
источник

ГА

Грачик Абдулошвили... in Laravel Pro
вот так dialogs-
источник

ГА

Грачик Абдулошвили... in Laravel Pro
источник

ГА

Грачик Абдулошвили... in Laravel Pro
то есть мне нужно диалоги построить по принципу у кого есть внутри сообщения is_read = 0   того вверх )
источник

AH

Andrew Hnidets in Laravel Pro
сделай touch диалога, когда туда пишешь сообщение. и сами диалоги вытаскивай с orderByDesc('updated_at')
источник

AH

Andrew Hnidets in Laravel Pro
там автоматически можно в модели указать связь которую трогать,  что-то типо такого protected $touches = ['dialog'];
источник

AH

Andrew Hnidets in Laravel Pro
подгуглишь там сам уже
источник