它是我的Db结构 我有一张学生桌
students
+-------+--------+----------+
|id | name | group_id |
+-------+--------+----------+
|1 | ali | 1 |
|2 | ahmad | 2 |
+-------+--------+----------+
groups
+------+-------------+
|id | group_name |
+------+-------------+
|1 | A |
|2 | B |
+------+-------------+
现在我必须显示student
表中的名称和Groups
StudentController
{
$students = Student::orderBy('id', 'desc')->get();
return view('student.index')->with(compact('students'));
}
我的观点
@foreach($students as $student)
<td>{{ $student->name }}</td>
<td {{ $student->group_name }} </td>
请帮助我从两个表中检索记录,我尝试使用不同的方法但是失败了
答案 0 :(得分:2)
您需要将关联方法添加到Student
类:
public function group()
{
return $this->belongsTo(Group::class);
}
其中Group
是groups
表的模型类。
然后在控制器中:
{
$students = Student::orderBy('id', 'desc')->with('group')->get();
return view('student.index')->with(compact('students'));
}
并在视图中:
@foreach($students as $student)
<td>{{ $student->name }}</td>
<td {{ $student->group->name }} </td>
答案 1 :(得分:0)
一名学生只属于一组。所以,学生和小组之间的关系是一对一的。
在Students.php模型中
public function group(){
return $this->hasOne(Group::class,'id','group_id');
}
并且在视图中您可以将组名称设为
@foreach($students as $student)
<td>{{ $student->name }}</td>
<td>{{ $student->group->name }}</td>
@endforeach