【问题标题】:Laravel eloquent one to many relationship data not showingLaravel 雄辩的一对多关系数据未显示
【发布时间】:2019-04-15 22:31:55
【问题描述】:

我有两张桌子, 学生桌 其中有列(id,family_id,name,class,section) 家庭表 其中有列(family_id,mobile_no,professional)

-- 我创建了两个模型。 学生模型:

class student extends Model
{

}

家庭模式

class family extends Model
{
  public function student()
    {
        return $this->hasMany('App\student');

    }
}

-- 我能够显示学生表中的所有数据, 我的控制器是:

public function index()
    {
       $finddata = student::orderBy('id', 'asc')->get();
      return view('students.index')->with('finddata', $finddata); }

-- 我尝试了什么 在家庭模型中:

return $this->hasMany('App\students');

我想要什么;

  • 我想连接家庭模型和学生模型..
  • 索引页面将只包含所有学生的姓名。我已经做过了
  • 当我点击学生姓名时,它应该会显示特定学生的所有信息,以及他的家庭信息。现在它只显示学生表中的信息。

【问题讨论】:

  • 在学生模型中定义关系函数: public function family() { return $this->belongsTo('App\Family'); }

标签: laravel eloquent


【解决方案1】:

你应该试试这个

class student extends Model
{

    public function familyId(){
        return $this->belongsTo(Family::class,'family_id');
    }

}

当您点击学生姓名时,它将重定向到 student/{id}

路线

Route::get('student/{id}', 'StudentController@show');

学生管理员

public function show(Request $request, $id)
{
    $student = student::find($id);
    return view('student.show')->with('student', $student); 
}

student.show.blade 文件

Mobile no: {{ $student->familyId->mobile_no }}
Profession: {{ $student->familyId->profession }}

【讨论】:

  • 我已经有控制器来查找我提到的数据,当我点击学生姓名时,我只想显示家庭信息。你能建议控制器和刀片的代码吗?
【解决方案2】:

在学生模型中:

class student extends Model
{
    public function family(){
        return $this->belongsTo(Family::class,'family_id');
    }

}

然后您可以通过以下方式访问 Blade 中的家庭信息:

{{$student->family->mobile_no}}
{{$student->family->profession}}

您最好使用artisan 命令生成模型和控制器,以便获得遵循命名约定的自动模板,例如大写的类名。

【讨论】:

  • 我尝试了你的解决方案,但我收到了这个错误,“未定义的变量:$student.. 你能否建议正确的修订版本。对于控制器和刀片。请记住,我能够显示所有数据来自学生表。
  • @iMatt,在你的刀片中,单个学生的变量是什么?我假设$studeng 但您应该在刀片循环中使用该变量。如果可能,请粘贴您的工作刀片模板。
  • 好的,这是我的控制器和刀片。 ___ 控制器:公共函数 index() { $finddata = Student::orderBy('id', 'asc')->get();返回视图('students.index')->with('finddata', $finddata); } ________________ Blade:用于索引:{{$finddata->name}}

    {{ $finddata->id}}

    上面的刀片显示了所有学生的姓名和 ID...当我单击任何名称时,它会在显示刀片中显示更多信息,例如班级、部分等...在显示刀片中也想看家庭信息。
  • 那么应该是$finddata->family->mobile_no等。再次,我建议您使用标准名称,如学生,学生等,以免将来混淆。
猜你喜欢
  • 2012-10-08
  • 2018-10-27
  • 2018-11-14
  • 2015-07-01
  • 2019-03-10
  • 2016-11-03
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多