Как мне создать массив подкатегорий, содержащих потенциальных пользователей? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть 3 таблицы: users, categories и categories_users.

users table
- id
- name
- email
- etc...
categories table
- id
- name
- type
- etc...
categories_users table
- id
- categories_id
- users_id
- demo1
- demo2
- demo3

demo2 вроде подкатегории

Мне нужно создать массив с (подкатегориями demo2) в качестве ключей и потенциальными пользователями в качестве значений в соответствующей (подкатегории demo2), чтобы я мог просматривать каждую категорию и получать ее пользователей.

Кто-нибудь знает, как добиться этого с помощью laravel?

Я пробовал следующее

$category = Category::where('id', 12)->first();
$users = $category->users->sortBy('pivot.demo2');
$users_by_category = [];
$the_users = [];

foreach($users ?? [] as $k => $v) {
    if ($k == 0 OR $v->pivot->demo2 == $users[$k -1]->pivot->demo2 ) {
        $the_users[] = $v;
        $users_by_category[$v->pivot->demo2] = $the_users;
    } elseif ($v->pivot->demo2 != $users[$k -1]->pivot->demo2 ) {
        $users_by_category[$v->pivot->demo2] = $the_users;
    }
} 

1 Ответ

1 голос
/ 11 октября 2019

Я думаю, что вы можете сделать это без цикла благодаря коллекциям.

$category = Category::with('users')->find(12);
$users_by_category = $category->users->groupBy('pivot.demo2')->all();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...