laravel - 如何使用数据透视表显示不同表格的列?
问题描述
我是 Laravel 的初学者,现在我正在做这个项目,但我在这一点上停留了几天。这是我想做的,我想显示导师选择的日期和时间段标签!
这是我的表格及其关系 https://imgur.com/WMMwhHK
日模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Day extends Model
{
protected $guarded = ['id', '_token'];
}
时隙模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Timeslot extends Model
{
protected $guarded = ['id', '_token'];
public function Tutor()
{
return $this->hasMany(Tutor::class);
}
}
Tutor_availability 模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tutor_availability extends Model
{
protected $fillable = ['tutor_id', 'timeslot_id', 'day_id'];
protected $guarded = ['id', '_token'];
public function tutor()
{
return $this->belongsTo('App\Tutor');
}
public function day()
{
return $this->belongsTo('App\Day');
}
public function timeslot()
{
return $this->belongsTo('App\Timeslot');
}
}
utor_availabilities 迁移
public function up()
{
Schema::create('tutor_availabilities', function (Blueprint $table) {
// $table->bigIncrements('id');
$table->integer('day_id')->unsigned();
$table->foreign('day_id')->references('id')->on('days')->onDelete('cascade');
$table->integer('timeslot_id')->unsigned();
$table->foreign('timeslot_id')->references('id')->on('timeslots')->onDelete('cascade');
$table->integer('tutor_id')->unsigned();
$table->foreign('tutor_id')->references('id')->on('tutors')->onDelete('cascade');
$table->timestamps();
$table->primary(['day_id', 'timeslot_id', 'tutor_id']);
});
}
导师控制器
public function index()
{
$tutors = Tutor::latest()->paginate(5);
$tutor_availabilities = Tutor_availability::all();
return view('tutors.index', [
'tutors' => $tutors,
'tutor_availabilities' => $tutor_availabilities
]);
}
看法
<tr>
<th>Days</th> <th> Timings</th>
</tr>
<tr>
<td>
{{$tutor_availabilities->day->label}}
</td>
<td>
{{$tutor_availabilities->timeslot->label}}
</td>
</tr>
解决方案
把它放在你的 Tutor_availability 模型中
public function day()
{
return $this->belongsTo(Day::class);
}
public function timeslot()
{
return $this->belongsTo(Timeslot:class);
}
然后在控制器中
public function index()
{
$tutor_availabilities = Tutor_availability::all();
return view('tutors.index',
compact('tutor_availabilities')) ;
}
然后在视野中
<table>
@foreach ($tutor_availabilities as $tutor_available)
<tr><td>
{{$tutor_available->day->label}}
</td>
<td>
{{$tutor_available->timeslot->label}}
</td></tr>
@endforeach
</table>
推荐阅读
- javascript - 将 rangeSelector 添加到折线图?
- core-data - 带有核心数据的 SwiftUI 预览:无效的 NSEntityDescription
- regex - sed 命令将 c 样式的多行注释更改为 c++ 样式的多行注释
- flutter - 错误:flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常:类型 'String' 不是类型 'int' 的子类型
- video - 在特定地区屏蔽视频
- vhdl - 实体在 Modelsim 仿真中没有架构
- python - 如何在python中清除存储在套接字中的数据
- postgresql - AutoMigrate 不生成自引用外键
- pytorch - RuntimeError:输入类型(torch.FloatTensor)和权重类型(torch.cuda.FloatTensor)即使在放置模型和输入到cuda之后也应该相同
- python - 如何使用 pyTelegramBotAPI 获取照片?