Estoy tratando de obtener algunos datos a través de relaciones y claves externas, pero me he enredado.

Tengo un Batsmen que el usuario puede comentar, los comentarios también pueden ser editados por los usuarios, los comentarios también tienen su propia página con la opción de eliminar o editar el comentario. Aquí es donde surge mi problema, estoy tratando de mostrar la nacionalidad de los bateadores, pero solo puedo recuperar la identificación de su nacionalidad y no el nombre del país.

Aqui estan mis mesas

Batsmen : ID, Nombre, biografía, Nationality_ID, Nacionalidad : ID, country_name, Usuario ID, nombre, Comentario : ID, comentario, Batsmen_ID, User_ID

Mis relaciones

Comentario:

public function batsmen(){
    return $this->belongsTo('App\Batsmen');
}
public function author()
{
    return $this->belongsTo('App\User','user_id');
}

Controlador:

   public function show($id)
    {
        $comment = Comment::find($id);

        return view('comments.show')->with('comment', $comment);
    }

Vista:

<h4>{{$comment->batsmen->Nationality_id}}</h4>

Entonces, ¿cómo obtendría el nombre del país para mostrar en lugar de nationality_ID?

3
detinu20 21 ene. 2018 a las 02:21

3 respuestas

La mejor respuesta

Cree otro método relationship en su clase de modelo Batsman como:

public function nationality(){
     return $this->belongsTo('App\Nationality','Nationality_id');
}

Y luego en tu opinión

<h4>{{$comment->batsmen->nationality->country_name}}</h4>
0
Sohel0415 21 ene. 2018 a las 04:27

Probar esto

public function show($id)
{
   $comment = Comment::with('batsmen')->find($id);

   return view('comments.show')->with('comment', $comment);
}
0
mputkowski 21 ene. 2018 a las 00:53

Debe agregar la relación entre bastman y nacionalidad

class Comment extends Model
{
    public function nationality(){

       return $this->belongsTo('App\Nationality',Nationality_id,id);
   }
}

Entonces puedes obtener fácilmente su país

<h4>{{$comment->batsmen->Nationality->country_name}}</h4>
0
Mahdi Younesi 21 ene. 2018 a las 05:23