如何从Laravel 5.8

时间:2019-05-04 16:48:36

标签: php laravel

我有两个表,一个用于“模型”,另一个用于“投票”,我想通过投票获得模型名称(投票字段=模型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”。

2 个答案:

答案 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');
}

Check this link