Anonymous
группируй по типам,
Anonymous
с выборкой по false
Anonymous
что сложного?
Anonymous
я ведь дал пример
Anonymous
как формировать подобное
Anonymous
<?php Notify::select(DB::raw('COUNT(*) as count, type'))->whereIn('type', ['comment','message','wall', 'board', 'group'])->groupBy('type');
Anonymous
Но вот куда указать id группы, о которой хотим получить уведомления?
Anonymous
->where('group_id',$id)
Anonymous
->whereIn('type', ['comment','message','wall', 'board', 'group'])
Anonymous
это тут не нужно
Anonymous
хотя и так, и так будет работать
Anonymous
сначала на sql запрос напиши
Anonymous
сначала на sql запрос напиши
конкретно мне проще делать через orm - это быстрее
Arthur
конкретно мне проще делать через orm - это быстрее
тут не для быстроты, а для понимания что нужно
Arthur
человек не может сформулировать что ему надо -> не понимает какой запрос в итоге должен получиться -> не знает что делать с orm
Anonymous
и вообще premature optimization
Anonymous
1) нужно получить количество строк по каждому type - группируем по type 2) делаем select числа от каждого сгруппированного количества и выводить через функцию count() 3) производим все остальные условия для выборки
Anonymous
всё довольно просто
Anonymous
там будут вложенные селекты
Anonymous
мне кажется, ORM для такого запроса будет лишним
Anonymous
зачем?
Anonymous
нет там никаких вложенных селектов
Anonymous
всё элементарно и просто
Anonymous
ты говоришь как заказчик
Anonymous
w8 a sec
Anonymous
сейчас вот специально для тебя сделаю подобный запрос и покажу sql, который сформируется
Anonymous
Anonymous
"select COUNT(*) as count, language from users where referral_status = ? group by language"
Anonymous
$users = \App\User::select(\Illuminate\Support\Facades\DB::raw('COUNT(*) as count, language'))->where('referral_status',0)->groupBy('language')->toSql();
Anonymous
easy
Anonymous
$data = CallBack::where('community_id', '=', $this->config['group_id'])->get(); $data->groupBy('type')->each(function($group) { dump($group->where('status', '=', 'new')->count() );});
Anonymous
Есть такое
Anonymous
Но выдает мне по всем типам результат
Anonymous
Общий так сказать, вместо нескольоких
Anonymous
Чувак, я тебе только что дал полностью всю инфу - просто замени поля и модельку на свои
Anonymous
это ведь copy-paste
Anonymous
$data->groupBy('type')->each(function($group) { dump($group->where('status', '=', 'new')->count() );}); вот это, думается, работает уже через коллекции, а не sql
Anonymous
но в любом случае считать всё по отдельности - бредовая затея
Anonymous
mysql делает это куда быстрее
Anonymous
CallBack::select(DB::raw('COUNT(*) as count, type'))->whereIn('type', ['comment','message','wall', 'board', 'group'])->groupBy('type')
Anonymous
В ответ получаю ничего
Anonymous
<?php $users = \App\CallBack::select(\Illuminate\Support\Facades\DB::raw('COUNT(*) as count, type'))->where('community_id',$this->config['group_id'])->where('status','new')->groupBy('type')->get();
Anonymous
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'type' in 'field list' (SQL: select COUNT(*) as count, type from callbacks where community_id = 1 and status = new group by type)
Anonymous
Это мой косяк
Anonymous
Вопрос ко мне или к кому? :)
Anonymous
в модельке нет поля
Anonymous
Заработало, спасибо
Anonymous
👍
Anonymous
ИНдексы при сортировке всегда разные
Anonymous
видимо не подойдет метод :(
Anonymous
ещё, помнится, в mysql есть сводные таблицы или что-то такое
Anonymous
можешь посмотреть в это направление
Anonymous
Перепроверил, вроде индексы не меняет
Anonymous
$notify[0]['count']; это по type обсуждения
Anonymous
$notify[1]['count']; это по type комментарии
Anonymous
Но нужно еще и isset проверять
Anonymous
Потому что если новых уведомлений нету, выдаст ошибку
Anonymous
if внедряй в db::raw()
Anonymous
мол если count 0, то бла бла бла
Anonymous
count может быть > 0
Anonymous
а вот cout по нужному типу
Anonymous
0
Anonymous
я понятия не имею о чём ты
Anonymous
если нужно выбирать в массив только то, где count > 0
Anonymous
то добавь where('count','>','0')
Andrey
'>','0' ??
Andrey
почему 0 как стринга
Anonymous
почему 0 как стринга
разницы никакой в данном случае - eloquent в любом случае приводит к типам
Andrey
как это нет разницы, наркоман чтоле?
Andrey
пиши правильно
Anonymous
лол
Anonymous
можешь ещё пробельчики в чатике расставить?
Andrey
было бы не плохо ))
Михаил
Могу ли я теперь из data какими то средствами получить информацию?
А если я просто предложу циклом по массиву пробежаться, меня отпиздят?
Anonymous
А если я просто предложу циклом по массиву пробежаться, меня отпиздят?
когда ты такое сделаешь на ресурсоёмкой задаче - тебя отпиздит твой сисадмин
Михаил
когда ты такое сделаешь на ресурсоёмкой задаче - тебя отпиздит твой сисадмин
Ну я просто предполагаю, что он эти записи и так уже получил и где-то еще потом будет выводить или обрабатывать
Михаил
Следовательно, выборка не такая уж неподъемная
Михаил
А если неподъемная - то и без этого цикла наебнется
Anonymous
работа с данными, по идее, в модельке делается отдельным методом
Михаил
Другое дело, если он хочет собрать только статистику по этой выборке, а сами данные больше нигде не выводить