我有两个表,一个用于“模型”,另一个用于“投票”,我想通过投票获得模型名称(投票字段=模型ID)
投票迁移表
public function up()
{
Schema::create('votantes', function (Blueprint $table) {
$table->increments('id');
$table->string('nome', 100);
$table->string('email', 60)->unique();
$table->integer('voto')->unsigned();
$table->timestamps();
$table->foreign('voto')->references('id')->on('candidatas')->onDelete('restrict');
});
}
投票模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Candidata;
class Votante extends Model
{
protected $fillable = ['nome', 'email', 'voto'];
public function candidata()
{
return $this->belongsTo('App\Candidata');
}
}
模型迁移表
public function up()
{
Schema::create('candidatas', function (Blueprint $table) {
$table->increments('id');
$table->string('nome', 100);
$table->string('clube', 60);
$table->string('foto', 100);
$table->timestamps();
});
}
我的控制器
public function votacao()
{
$linhas = Votante::orderBy('nome')->get();
// dd($linhas);
return view('votacao', ['linhas' => $linhas]);
}
我要显示投票成员,电子邮件和模型名称的刀片文件
<table class="table table-hover">
<thead>
<tr>
<th>Cód Votante</th>
<th>Nome Votante</th>
<th>Modelo Escolhida(Cód)</th>
<th>e-mail</th>
</tr>
</thead>
@foreach ($linhas as $linha)
<tr>
<td> {{ $linha->id }} </td>
<td> {{ $linha->nome }} </td>
<td> {{ $linha->candidata->nome }} </td>
<td> {{ $linha->email }} </td>
@endforeach
我想记录投票条目,并从另一个窗口中的数据显示投票者的姓名,电子邮件和模型名称。
当前整个列表工作正常,唯一的障碍是显示模板的名称,而不是在投票表中注册的“ id”。
答案 0 :(得分:0)
您的控制器应为:
public function votacao()
{
$linhas = Votante::with('candidata')->orderBy('nome')->get();
// dd($linhas);
return view('votacao', ['linhas' => $linhas]);
}
答案 1 :(得分:0)
如果您的父模型不使用id作为其主键,或者您希望将子模型连接到其他列,则可以将第三个参数传递给belongsTo方法,以指定父表的自定义键
public function candidata()
{
return $this->belongsTo('App\Candidata','voto','id');
}