Veran, tengo 3 tablas: las plantas, los usuarios y los comentarios. La tabla de comentarios tiene claves foraneas que apuntan a una planta y un usuario determinados.
Con eso en mente, cree una vista la cual muestra los comentarios filtrandolos segun sobre que planta se habla.
Ahora tengo que conseguir 2 cosas. La primera, que en vez del código del usuario muestre su nombre (variable name de la tabla User) y que se muestre un mensaje con el nombre de la planta a la cual vemos sus comentarios.
Para este caso me interesa conseguir lo primero, para lo cual deberia modificar vegetal/detail.blade.php de la siguiente forma:
@extends('layouts.app') @section('content') <div class="row"> <div class="col-md-8 col-md-offset-2"> <h2 class="text-center text-mute"> {{ __("Comentarios acerca del :nombre", ['nombre' => $ pla->nombre]) }} </h2> @forelse($ comentario as $ c) <div class="panel panel-default"> <div class="panel-heading panel-heading-forum"> <h3> Usuario: {{$ c->usuario}} </h3> </div> <div class="panel-body"> {{ $ c->comentario }} </div> </div> @empty <div class="alert alert-danger"> {{ __("No hay ningún comentario sobre plantas en este momento") }} </div> @endforelse <a href="/flora/public" class="btn btn-info pull-right"> {{ __("Volver a la lista de plantas") }} </a> </div> </div> @endsection
Sin embargo, me sale este mensaje de error:
Me gustaria saber como muestro correctamente el nombre de la planta. Claramente el error esta en ” {{ __(“Comentarios acerca del :nombre”, [‘nombre’ => $ pla->nombre]) }} “. Sin esta linea de codigo, se ve correctamente la tabla.
Dejo otros datos a tener en cuenta. Web.php:
Route::get('/comentarios/{pla}', 'PlantasController@show');
PlantasController.php:
public function show(Plantas $ pla){ $ comentario = $ pla->comentarios()->with(['vegetal'])->paginate(2); return view('vegetal.detail', compact('plantas','comentario')); }
app/plantas.php:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class plantas extends Model{ protected $ table = 'plantas'; protected $ fillable = [ 'nombre', 'descripcion', ]; public function comentarios(){ return $ this->hasMany(Comentario::class,'planta'); } }
app/Comentario.php:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Comentario extends Model{ protected $ table = 'comentarios'; protected $ fillable = [ 'planta', 'usuario', 'comentario', ]; public function vegetal(){ return $ this->belongsTo(plantas::class, 'planta'); } public function usuario(){ return $ this->belongsTo(User::class, 'usuario'); } }