@laravel_pro

Страница 255 из 2014
Wild
20.12.2016
12:58:07
5 разных count

у меня есть поле type, и оно может быть 1 из 5.

И по каждому значению, мне нужно узнать, сколько строк там есть

VSKut
20.12.2016
12:58:40
groupby group_id

Google
VSKut
20.12.2016
12:59:03
и там в select(bd::raw(count(*)))

как-то так

эксперементируй

Wild
20.12.2016
12:59:15
все не то

VSKut
20.12.2016
12:59:46
группируешь по этому id и тебе сразу даёт список count для каждого из нужных id

<?php Notify::select(DB::raw('COUNT(*) as count, group_id'))->whereIn('group_id', [$id,$id2,$id3])->groupBy('group_id');

что-то такое

выдаст несколько строк count

для каждого id

Wild
20.12.2016
13:04:13
id один

а вот type

несколько

Структура таблицы имеет такой вид примерно id, group_id, type, readed.

Google
Wild
20.12.2016
13:05:42
group_id я указываю.

VSKut
20.12.2016
13:05:52
ты когда постишь что-то - нормальн объясняйся

Wild
20.12.2016
13:06:16
а вот type бывает = group, comments, message, wall, board

и мне нужно узнать, сколько есть строк, с readed=false, по каждому типу уведомлений, у группы

VSKut
20.12.2016
13:06:42
ну так а что тебе посчитать нужно?

группируй по типам,

с выборкой по false

что сложного?

я ведь дал пример

как формировать подобное

Wild
20.12.2016
13:08:53
<?php Notify::select(DB::raw('COUNT(*) as count, type'))->whereIn('type', ['comment','message','wall', 'board', 'group'])->groupBy('type');

Но вот куда указать id группы, о которой хотим получить уведомления?

VSKut
20.12.2016
13:09:30
->where('group_id',$id)

->whereIn('type', ['comment','message','wall', 'board', 'group'])

это тут не нужно

хотя и так, и так будет работать

i
20.12.2016
13:11:47
сначала на sql запрос напиши

VSKut
20.12.2016
13:12:44
сначала на sql запрос напиши
конкретно мне проще делать через orm - это быстрее

Arthur
20.12.2016
13:13:05
конкретно мне проще делать через orm - это быстрее
тут не для быстроты, а для понимания что нужно

человек не может сформулировать что ему надо -> не понимает какой запрос в итоге должен получиться -> не знает что делать с orm

Google
i
20.12.2016
13:14:48
и вообще premature optimization

VSKut
20.12.2016
13:17:37
1) нужно получить количество строк по каждому type - группируем по type 2) делаем select числа от каждого сгруппированного количества и выводить через функцию count() 3) производим все остальные условия для выборки

всё довольно просто

i
20.12.2016
13:20:10
там будут вложенные селекты

мне кажется, ORM для такого запроса будет лишним

VSKut
20.12.2016
13:21:49
зачем?

нет там никаких вложенных селектов

всё элементарно и просто

i
20.12.2016
13:22:21
ты говоришь как заказчик

VSKut
20.12.2016
13:22:54
w8 a sec

сейчас вот специально для тебя сделаю подобный запрос и покажу sql, который сформируется

"select COUNT(*) as count, language from users where referral_status = ? group by language"

VSKut
20.12.2016
13:25:45
$users = \App\User::select(\Illuminate\Support\Facades\DB::raw('COUNT(*) as count, language'))->where('referral_status',0)->groupBy('language')->toSql();

easy

Wild
20.12.2016
13:27:23
$data = CallBack::where('community_id', '=', $this->config['group_id'])->get(); $data->groupBy('type')->each(function($group) { dump($group->where('status', '=', 'new')->count() );});

Есть такое

Но выдает мне по всем типам результат

Общий так сказать, вместо нескольоких

VSKut
20.12.2016
13:28:14
Чувак, я тебе только что дал полностью всю инфу - просто замени поля и модельку на свои

это ведь copy-paste

Google
VSKut
20.12.2016
13:29:18
$data->groupBy('type')->each(function($group) { dump($group->where('status', '=', 'new')->count() );}); вот это, думается, работает уже через коллекции, а не sql

но в любом случае считать всё по отдельности - бредовая затея

mysql делает это куда быстрее

Wild
20.12.2016
13:30:32
CallBack::select(DB::raw('COUNT(*) as count, type'))->whereIn('type', ['comment','message','wall', 'board', 'group'])->groupBy('type')

В ответ получаю ничего

VSKut
20.12.2016
13:31:56
<?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();

Wild
20.12.2016
13:34:02
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)

Это мой косяк

Admin
ERROR: S client not available

VSKut
20.12.2016
13:34:54
Вопрос ко мне или к кому? :)

в модельке нет поля

Wild
20.12.2016
13:37:45
Заработало, спасибо

VSKut
20.12.2016
13:41:03
?

Wild
20.12.2016
13:43:31
ИНдексы при сортировке всегда разные

видимо не подойдет метод :(

VSKut
20.12.2016
13:46:57
ещё, помнится, в mysql есть сводные таблицы или что-то такое

можешь посмотреть в это направление

Wild
20.12.2016
13:47:17
Перепроверил, вроде индексы не меняет

$notify[0]['count']; это по type обсуждения

$notify[1]['count']; это по type комментарии

Google
Wild
20.12.2016
13:48:20
Но нужно еще и isset проверять

Потому что если новых уведомлений нету, выдаст ошибку

VSKut
20.12.2016
13:49:05
if внедряй в db::raw()

мол если count 0, то бла бла бла

Wild
20.12.2016
13:49:33
count может быть > 0

а вот cout по нужному типу

0

VSKut
20.12.2016
13:50:30
я понятия не имею о чём ты

если нужно выбирать в массив только то, где count > 0

то добавь where('count','>','0')

Quiss
20.12.2016
13:55:45
'>','0' ??

почему 0 как стринга

VSKut
20.12.2016
14:01:54
почему 0 как стринга
разницы никакой в данном случае - eloquent в любом случае приводит к типам

Quiss
20.12.2016
14:02:08
как это нет разницы, наркоман чтоле?

пиши правильно

VSKut
20.12.2016
14:02:21
лол

можешь ещё пробельчики в чатике расставить?

Quiss
20.12.2016
14:03:04
было бы не плохо ))

Михаил
20.12.2016
14:04:28
Могу ли я теперь из data какими то средствами получить информацию?
А если я просто предложу циклом по массиву пробежаться, меня отпиздят?

VSKut
20.12.2016
14:05:30
А если я просто предложу циклом по массиву пробежаться, меня отпиздят?
когда ты такое сделаешь на ресурсоёмкой задаче - тебя отпиздит твой сисадмин

Михаил
20.12.2016
14:06:12
когда ты такое сделаешь на ресурсоёмкой задаче - тебя отпиздит твой сисадмин
Ну я просто предполагаю, что он эти записи и так уже получил и где-то еще потом будет выводить или обрабатывать

Страница 255 из 2014