У меня есть следующий сценарий:Query Logic: Группировка тэгов их подсчета и другого параметра
Столы
'сообщений (для краткости опускаем)
«теги '
'id', 'name', 'kind' (kind = $table->enum('kind', array('male', 'female')))
'post_tag' (сводная таблица)
'id', 'post_id', 'tag_id'
Модели
Models\Post.php
public function tags() { return $this->belongsToMany('Models\Tag'); }
Models\Tag.php
public function posts() { return $this->belongsToMany('Models\Post'); }
Контроллер
$slug = 'hello-world';
$post = $this->posts->getFirstBy('slug', $slug);
$tags = $post->tags;
Пример Выход$tags
array (size=7)
0 =>
array (size=8)
'id' => int 1
'name' => string 'rough' (length=5)
'kind' => string 'male' (length=4)
1 =>
array (size=8)
'id' => int 2
'name' => string 'cosy' (length=4)
'kind' => string 'female' (length=6)
2 =>
array (size=8)
'id' => int 2
'name' => string 'cosy' (length=4)
'kind' => string 'female' (length=6)
3 =>
array (size=8)
'id' => int 2
'name' => string 'cosy' (length=4)
'kind' => string 'female' (length=6)
4 =>
array (size=8)
'id' => int 3
'name' => string 'sensual' (length=7)
'kind' => string 'female' (length=6)
5 =>
array (size=8)
'id' => int 4
'name' => string 'hard' (length=4)
'kind' => string 'male' (length=4)
6 =>
array (size=8)
'id' => int 1
'name' => string 'rough' (length=4)
'kind' => string 'male' (length=4)
В моем шаблоне я хотел бы, чтобы сгруппировать данные, как так:
мужской
- rough (2 occurances)
- hard (1 occurance)
женщина
- cosy (3 occurances)
- sensual (1 occurance)
Обратите внимание, что порядок - это самое большое количество событий до самого низкого уровня. Итак, мне не только нужно иметь доступ к счету тегов, но также мне нужно их сгруппировать по kind
(мужчина и женщина в этом примере).
Какой запрос мне нужно выполнить для получения желаемого результата? К сожалению, я не очень хорошо разбираюсь в формулировках MySQL. Заранее спасибо!