Anuncio

Entra a participar en el Slack de Laraveles. Solicita tu invitación aquí.
Nos ayuda a manter la comunidad

#1 29/04/2016 22:47:40

Mark
Miembro
Registrado: 27/12/2014
Mensajes: 8

Mostrar nombre de relacion

Como puedo mostrar el nombre del cliente con el que se relaciona?
Migracion projects

 
Schema::create('projects', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 60);
            $table->string('descripcion');
            //para relacionar con cliente
            $table->integer('client_id')->unsigned();
            $table->foreign('client_id')
                ->references('id')->on('clients')
                ->onDelete('cascade');

Migracion clients

 
Schema::create('clients', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nombre', 60);

Projects controller

 
use App\Project;
use App\Client;

public function index()
    {
        $projects = Project::all();
        return view('admin/projects.index',compact('projects'));
    }

Model project

 
class Project extends Model
{
public function clients(){
        //Este proyecto pertenece a un cliente
    	return $this->belongsTo('App\Client');
    }
}
 

Model Client

 
class Client extends Model
{
public function projects(){
        //Este cliente tiene muchos proyectos
    	return $this->hasMany('App\Project');
    }
}
 

Como puedo mostrar el nombre del cliente con el que se relaciona en la vista?

 
@foreach($projects as $project) 
	<tbody> 
		<tr> 
			<th scope="row">{{$project->id}}</th> 
			<td>{{$project->nombre}}</td> 

			<td>{{$project->clients->nombre}}</td> //AQUI
			<td>{{$project->descripcion}}</td> 
			<td class="form-inline">
				<a href="{{ route('admin.projects.edit', $project->id) }}" class="btn btn-primary">Editar</a>
				{!!Form::open(['route'=>['admin.projects.destroy', $project->id], 'method' => 'DELETE'])!!}
				{!!Form::submit('Eliminar',['class'=>'btn btn-danger'])!!}
				{!!Form::close()!!}  
			</td> 
		</tr> 

	</tbody> 
@endforeach
 

Última edición por Mark (30/04/2016 22:53:09)

Desconectado

#2 30/04/2016 12:03:45

hheredia
Administrador
Localidad: this.location
Registrado: 16/06/2014
Mensajes: 1.408
Sitio web

Re: Mostrar nombre de relacion

$projects = Project::with('clients')->get();

Con eso cargas las relaciones con clientes, y ya puedes obtener sus datos como lo estas intentando en la vista.
Esto y otras cosas esta explicado en la documentación: https://laravel.com/docs/5.1


Saludos!.
Well, there is in fact a single purpose for all software: To help people

Desconectado

#3 30/04/2016 22:48:53

Mark
Miembro
Registrado: 27/12/2014
Mensajes: 8

Re: Mostrar nombre de relacion

hheredia escribió:
$projects = Project::with('clients')->get();

Con eso cargas las relaciones con clientes, y ya puedes obtener sus datos como lo estas intentando en la vista.
Esto y otras cosas esta explicado en la documentación: https://laravel.com/docs/5.1

Me sale
Agrege mas informacion

ErrorException in f5b152a6c8ec2d2162e2783c6ce34c19 line 25:
Trying to get property of non-object (View:
/home/documentacion/resources/views/admin/projects/index.blade.php)

Última edición por Mark (30/04/2016 22:53:37)

Desconectado

#4 01/05/2016 01:17:03

Mark
Miembro
Registrado: 27/12/2014
Mensajes: 8

Re: Mostrar nombre de relacion

Ya lo resolvi el error estaba en la migracion
Estaba en client_id y debe ser clients_id
Es decir debe ser llamado igual que la tabla mas _id

//para relacionar con cliente
$table->integer('clients_id')->unsigned();
            $table->foreign('clients_id')
                ->references('id')->on('clients')
                ->onDelete('cascade');
                ->references('id')->on('clients')
                ->onDelete('cascade');

Desconectado

Pié de página <- REVISAR ->

Powered by FluxBB

Ayuda a mantener la comunidad: