【发布时间】:2021-09-07 14:20:24
【问题描述】:
我有 3 个模型 User 、 MyClass 和 AssignedClassModels
用户表
| id | forename | lastname | |
|---|---|---|---|
| 1 | Rayhan | Parvez | |
| 2 | Tuhin | Saud | |
| 3 | Asif | Ahmed | |
| 4 | Shuvo | Khan |
MyClasses 表
| id | name | |
|---|---|---|
| 1 | Ten | |
| 2 | Six |
AssignedClassModels 表
| id | MyClass_id | user_id |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 4 |
所以,现在我想加入这 3 个表,并希望以按类的方式获得结果,但它总是给我每个组的第一条记录。
这是我的 JSON 输出结果
{
success: true,
message: "Display All The Pupil list Group by Class",
data: [
{
id: 1,
forename: "Rayhan",
lastname: "Parvez",
class_name: "Ten",
class_id: 1
},
{
id: 2,
forename: "Tuhin",
lastname: "Saud",
class_name: "Six",
class_id: 2
}
]
}
这是我的控制器代码
AssignedClassController
public function index()
{
try {
$class_list = DB::table('assigned_class_models')
->join('users', 'users.id', '=', 'assigned_class_models.user_id')
->join('my_classes', 'my_classes.id', '=', 'assigned_class_models.MyClass_id')
->select('users.id','users.forename','users.lastname','my_classes.name as class_name','my_classes.id as class_id')
->groupBy('my_classes.id')
->get();
return response()->json([
'success'=> true,
'message' => 'Display All The user list Group by Class',
'data' => $class_list
] , 200);
}
catch (\Throwable $th) {
return response()->json([
'success'=> false,
'message' => 'Unauthorized User',
] , 401);
}
}
这是我的模型代码
AssignedClassModel
class AssignedClassModel extends Model
{
use HasFactory;
public function User(){
return $this->belongsTo(User::class , 'user_id' , 'id');
}
public function MyClass(){
return $this->belongsTo(MyClass::class , 'MyClass_id' , 'id');
}
}
但是它没有给我每个组的所有记录,而是给我每个组的第一个记录,而不是给我,为什么?
【问题讨论】:
-
你必须使用 eloquent 和 laravel 关系然后它非常容易使用
-
laravel.com/docs/8.x/eloquent-relationships 如果需要更多帮助,请告诉我
-
是的,你必须更新你的问题添加你的模型然后我可以帮助你
-
是的,用它雄辩。
-
更新你的问题添加模型然后我会帮你正确