使用 Eloquent ORM 检索分组关系
Retrieve grouped relation with Eloquent ORM
我的关系是这样的:
User
- id
Menu
- id
- appetizer_id
- main_course_id
- dessert_id
User_Menu
- user_id
- menu_id
及对应机型:
class User
{
public function menus()
{
return $this->belongsToMany('App\Models\Menu', 'user_menu', 'user_id', 'menu_id');
}
}
class Menu
{
public function dessert()
{
return $this->belongsTo('App\Models\Dessert', 'dessert_id');
}
}
换句话说,存在具有多对多关系的用户和菜单。现在我想为给定用户检索所有不同的 desserts。我试过使用 group by,但它不允许我 select 和按单个列分组,因为数据透视列始终包含在查询中:
$desserts = User::find(1)->menus()
->select('dessert_id')
->groupBy('dessert_id')
->with('dessert')
->get();
抛出以下错误:
'User_Menu.user_id' isn't in GROUP BY
$desserts = User::join('User_Menu', 'User.id', '=', 'User_Menu.user_id')
->join('Menu', 'User_Menu.menu_id', '=','Menu.id')
->get();
我的关系是这样的:
User
- id
Menu
- id
- appetizer_id
- main_course_id
- dessert_id
User_Menu
- user_id
- menu_id
及对应机型:
class User
{
public function menus()
{
return $this->belongsToMany('App\Models\Menu', 'user_menu', 'user_id', 'menu_id');
}
}
class Menu
{
public function dessert()
{
return $this->belongsTo('App\Models\Dessert', 'dessert_id');
}
}
换句话说,存在具有多对多关系的用户和菜单。现在我想为给定用户检索所有不同的 desserts。我试过使用 group by,但它不允许我 select 和按单个列分组,因为数据透视列始终包含在查询中:
$desserts = User::find(1)->menus()
->select('dessert_id')
->groupBy('dessert_id')
->with('dessert')
->get();
抛出以下错误:
'User_Menu.user_id' isn't in GROUP BY
$desserts = User::join('User_Menu', 'User.id', '=', 'User_Menu.user_id')
->join('Menu', 'User_Menu.menu_id', '=','Menu.id')
->get();