Laravel - 在一个页面中显示来自多个表的数据

时间:2017-11-20 11:46:28

标签: laravel eloquent

我的数据库中有3个表。我想在一个页面上显示所有3个表格数据。

Student.php

public function hobbies() {
    return $this->hasMany(Student::class);
}

Hobbie.php

public function student()
{
    return $this->belongsTo(Student::class);
}

Controller.php这样

$students->name= request('name');
    $students->address = request('address');
    if($students->save())

for ($i=0; $i < count(request('hob')); ++$i) 
        {
        $hobbies = new Hobby;
        $hobbies->name= request('hob')[$i];
        $students->hobbies()->save($hobbies);
        }

View.blade.php     $学生 - &GT;爱好() - &GT;滚刀;

但它并没有表现出任何爱好。什么是正确的解决方案?

1 个答案:

答案 0 :(得分:0)

您的整个控制器代码会很有帮助。

在您的视图$students->hobbies()->hob;中,您正在访问收藏集hob的媒体资源$students->hobbies()。您想要访问Collection hob元素的属性$students->hobbies(),因此您可能希望访问$students->hobbies()[0]->hob或使用foreach遍历Collection。

在视图中访问$students->hobbies()实际上会查询您的数据库,因此最好在控制器中设置$hobbies变量并将其传递给视图,然后查看变量。

@foreach ($hobbies as $hobby) {{ $hobby->hob }}<br/> @endforeach