Laravel 不同用户类型使用相同的控制器
Laravel Same Controller for Different User Types
我有两种用户类型:教师和学生
学生路线是:
GET /me/books
学生们应该只有他们的书作为回应。
教师路线是:
GET /books
老师应该有所有学生的书作为回应。
我有一个模型:Book
和一个控制器:BookController
。在这种情况下编写 BookController@index
方法的最佳方法是什么?在 index 方法中为用户类型使用 switch case 听起来不像是最佳实践。
您甚至可以保持路线不变。只用老师和学生的角色。
如果您不想实现角色,您可以只在用户 table 上有一列,类型为教师或学生。
然后当请求到达控制器方法时,根据用户的类型,您可以编写查询以获取教师的所有书籍,或者仅获取分配给学生的用户的书籍。
public function index()
{
$user = auth()->user();
$query = Book::query();
if($user->type === 'student') {
$query->where(/*some condition to constrain the records*/);
//Or if you have a relation to fetch books for the user
$query = User::query()->with('books');
}
$books = $query->get();
//return json response for ajax request or a view
}
你好朋友你可以如下用户关系或查询
public function getStudentBook() //get the student book
{
$user = auth()->user();
if($user->role == 'student') { //assuming role column has student or teacher value
//assuming user_books as pivot table for users and book table
$books = Book::join('user_books', 'user_books.student_id', '=', 'users.id')
->where('user_books.student_id', '=', $user->id)
->groupBy(user_books.book_id)
->get();
}
}
public function getStudenstBook() //get the students book of teacher
{
$user = auth()->user();
if($user->role == 'teacher') { //assuming role column has student or teacher value
//assuming student_teacher table as as pivot table for teacher student table
$student_ids = DB::table('student_teacher')->where('teacher_id' , '=', $user->id)
->grouBy('student_teacher.student_ids')->pluck('student_ids')->toArray();
//assuming user_books as pivot table for users and book table
$books = Book::join('user_books', 'user_books.student_id', '=', 'users.id')
->whereIn('user_books.student_id', $student_ids)
->groupBy(user_books.book_id)
->get();
}
}
如有任何疑问,请随时发表评论。谢谢,祝你有美好的一天
我有两种用户类型:教师和学生
学生路线是:
GET /me/books
学生们应该只有他们的书作为回应。
教师路线是:
GET /books
老师应该有所有学生的书作为回应。
我有一个模型:Book
和一个控制器:BookController
。在这种情况下编写 BookController@index
方法的最佳方法是什么?在 index 方法中为用户类型使用 switch case 听起来不像是最佳实践。
您甚至可以保持路线不变。只用老师和学生的角色。
如果您不想实现角色,您可以只在用户 table 上有一列,类型为教师或学生。
然后当请求到达控制器方法时,根据用户的类型,您可以编写查询以获取教师的所有书籍,或者仅获取分配给学生的用户的书籍。
public function index()
{
$user = auth()->user();
$query = Book::query();
if($user->type === 'student') {
$query->where(/*some condition to constrain the records*/);
//Or if you have a relation to fetch books for the user
$query = User::query()->with('books');
}
$books = $query->get();
//return json response for ajax request or a view
}
你好朋友你可以如下用户关系或查询
public function getStudentBook() //get the student book
{
$user = auth()->user();
if($user->role == 'student') { //assuming role column has student or teacher value
//assuming user_books as pivot table for users and book table
$books = Book::join('user_books', 'user_books.student_id', '=', 'users.id')
->where('user_books.student_id', '=', $user->id)
->groupBy(user_books.book_id)
->get();
}
}
public function getStudenstBook() //get the students book of teacher
{
$user = auth()->user();
if($user->role == 'teacher') { //assuming role column has student or teacher value
//assuming student_teacher table as as pivot table for teacher student table
$student_ids = DB::table('student_teacher')->where('teacher_id' , '=', $user->id)
->grouBy('student_teacher.student_ids')->pluck('student_ids')->toArray();
//assuming user_books as pivot table for users and book table
$books = Book::join('user_books', 'user_books.student_id', '=', 'users.id')
->whereIn('user_books.student_id', $student_ids)
->groupBy(user_books.book_id)
->get();
}
}
如有任何疑问,请随时发表评论。谢谢,祝你有美好的一天