Laravel从多个表

时间:2016-10-27 11:18:00

标签: php laravel

它是我的Db结构 我有一张学生桌

students 
+-------+--------+----------+
|id     |  name  | group_id | 
+-------+--------+----------+                
|1      |  ali   |     1    |
|2      |  ahmad |     2    |
+-------+--------+----------+

groups
+------+-------------+
|id    |  group_name |
+------+-------------+                
|1     |     A       |
|2     |     B       |
+------+-------------+

现在我必须显示student表中的名称和Groups

中的group_name

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>

请帮助我从两个表中检索记录,我尝试使用不同的方法但是失败了

2 个答案:

答案 0 :(得分:2)

您需要将关联方法添加到Student类:

public function group()
{
    return $this->belongsTo(Group::class);
}

其中Groupgroups表的模型类。

然后在控制器中:

{
    $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