php - 在 Laravel 5.4中,php如何联接两个表

  显示原文与译文双语对照的内容
73 1

我正在学习 Laravel 5.4.但我一直在一个地方。

我有两个表 courseNames branchnames 。

branchnames表包含: id 。branchname 。course_id

courseNames表包含: id,coursename

coursename具有唯一名称,branchnames的course_id具有coursename的id,可以重复。

我的BranchNameController

public function index()
{
 $branchname = branchname::all();
 $coursename = coursename::all();
 return view('admin.branchname',compact('branchname','coursename'));
}

branchname.blade.php 为:

<tbody>
@foreach($branchname as $branchnames)
<tr>
<td>{{ $branchnames->branchname }}</td>
<td>{{ $branchnames->course_id }}</td>
</tr>
@endforeach 
</tbody>

我想显示课程名称,而不是 {{ $branchnames-> course_id }}如何完成?

模型 branchname.php 为:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class branchname extends Model
{
//
}

模型 coursename.php 为:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class coursename extends Model
{
//
}
时间:原作者:0个回答

75 5

你可以使用 Laravel 关系来实现这个。你的branchnames course_id列属于课程表。

在branchname模型中添加以下关系:

public function course() {
 return $this->belongsTo(Appcoursename::class, 'course_id')
}

然后在控制器索引函数中使用:

public function index()
{
 $branchname = branchname::with('course')->get();
 $coursename = coursename::all();
 return view('admin.branchname',compact('branchname','coursename'));
}

然后在视图中,可以显示名称:

<td>{{ isset($branchnames->course)? $branchnames->course->coursename :"" }}</td>
原作者:
...