如何制作包含预期用户的子类别数组?

时间:2019-10-11 16:21:17

标签: laravel eloquent

我有3个表:userscategoriescategories_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 -sub类别)下使用(demo2-子类别)作为键,将预期用户作为值构成一个数组,这样我就可以遍历每个类别并获取其用户。 / p>

有人知道如何使用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 个答案:

答案 0 :(得分:1)

我想借助Collections,您可以无循环地做到这一点。

$category = Category::with('users')->find(12);
$users_by_category = $category->users->groupBy('pivot.demo2')->all();