我有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 -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;
}
}
答案 0 :(得分:1)
我想借助Collections,您可以无循环地做到这一点。
$category = Category::with('users')->find(12);
$users_by_category = $category->users->groupBy('pivot.demo2')->all();