繁体   English   中英

Laravel从多个表中检索数据

[英]Laravel retrieve data from multiple tables

它是我的Db结构,我有一个学生表

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

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

现在我必须显示来自student表的名称和来自Groups group_name

学生控制器

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

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

您需要将关系方法添加到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>

一个学生仅属于一组。 因此,学生与小组之间的关系是一对一的。

在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM