Result field name instead of id in Laravel 5?

1

I have a relationship in Laravel but when I make an query comes the id and not the field name.

Model Evento

    public function tipo_evento() {
    return $this->hasOne('App\TipoEvento','id','tipo_evento');
}

Model TipoEvento

    public function evento() {
    return $this->belongsTo('App\Evento');
}

No controller

$eventos = Evento::with('tipo_evento')->get();

The tables are

Eventos
  -id (1)
  -nome_evento(blabla)
  -tipo_evento(1)
Tipo Evento
  -id(1)
  -nome(festa)

I want to use $eventos = Evento::with('tipo_evento')->get(); ven tipo_evento party not 1 how are you coming?

    
asked by anonymous 12.06.2017 / 18:35

2 answers

1

The relationships of 1 for many in these two Models and the nomenclature to work would be:

Class Evento

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Evento extends Model
{
    protected $table = "eventos";
    protected $primaryKey = "id";
    protected $fillable = ['nome_evento', 'tipo_evento'];

    public function tipoEvento()
    {
        return $this->belongsTo('App\TipoEvento','tipo_evento','id');
    }
}

Class TipoEvento

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class TipoEvento extends Model
{
    protected $table = "tipoeventos";
    protected $primaryKey = "id";
    protected $fillable = ['nome'];

    public function eventos()
    {
        return $this->hasMany('App\Evento','tipo_evento','id');
    }
}

How to use?

foreach (Evento::with('tipoevento')->get() as $evento)
{
    echo $evento->tipoevento->nome;
}

or making inner join also:

$eventos = Evento::join('tipoeventos', 'tipoeventos.id','=','eventos.id')
            ->select('tipoeventos.nome', 'eventos.id', 'eventos.nome_evento')
            ->get();

foreach ($eventos as $evento)
{
    echo $evento->nome;
}

Note: Check the changes, how to write the methods and also note the relationships ...

13.06.2017 / 03:09
1

Try this:

foreach ( Evento::with('tipo_evento')->get() as $evento )
{
    echo $evento->tipo_evento->nome;
}
    
12.06.2017 / 18:47