【发布时间】:2023-03-26 06:38:01
【问题描述】:
我的代码:
$course = Course::find(1);
$teachers = $course->Users()->where('role_id', 1)->get();
$students = $course->Users()->where('role_id', 2)->get();
在这个解决方案中,我有两种不同的用户类型。 Users() 函数是一个 belongsToMany 关系。
public function Users()
{
return $this->belongsToMany(User::class, 'course_users')->withPivot('role_id');
}
还有我的 course_users 表列:user_id、course_id、role_id
这段代码运行正常。
但是,当我查看查询时,我看到了针对这种情况的两个 SQL 查询。我只想使用一个查询并仅将过滤后的值获取到合适的变量以提高性能。我该怎么做?
我尝试了下面的代码。但它只获取第一个变量 $teachers,而不是 $students。
$users = $course->Users();
$teachers = $users->where('role_id', 1)->get();
$students = $users->where('role_id', 2)->get();
你的意见是什么? 谢谢。
【问题讨论】:
标签: php mysql sql performance laravel