Как вызвать данные из другой таблицы в Laravel 5.8 - PullRequest
0 голосов
/ 04 мая 2019

У меня есть две таблицы, одна для "моделей", а другая для "голосов", я хочу взять название модели по голосу (Поле голосования = идентификатор модели)

Таблица миграции голосов

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

Я хочу записать запись о голосовании, и из этих данных отобразить в другом окне имя проголосовавшего, адрес электронной почты и название модели.

В настоящее время весь список работает, единственным препятствием является отображение имени шаблона, а не идентификатора, зарегистрированного в таблице голосов.

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Если ваша родительская модель не использует id в качестве своего первичного ключа, или вы хотите присоединить дочернюю модель к другому столбцу, вы можете передать третий аргумент методу ownTo, определяющему пользовательский ключ вашей родительской таблицы

public function candidata() 
{
    return $this->belongsTo('App\Candidata','voto','id');
}

Проверить эту ссылку

0 голосов
/ 04 мая 2019

Ваш контроллер должен выглядеть так:

public function votacao()
    {

        $linhas = Votante::with('candidata')->orderBy('nome')->get();
        // dd($linhas);
        return view('votacao', ['linhas' => $linhas]);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...