Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema con aplicación creada en laravel

Estas en el tema de Problema con aplicación creada en laravel en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos espero me puedan ayudar , Me encuentro creando un CRUD hasta el momento tengo el Create , delete . Tengo problemas con el ...
  #1 (permalink)  
Antiguo 24/08/2013, 22:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Problema con aplicación creada en laravel

Hola amigos espero me puedan ayudar , Me encuentro creando un CRUD hasta el momento tengo el Create , delete .

Tengo problemas con el show o consultar

este es mi codigo

vista
Código PHP:
Ver original
  1. {{ HTML::link(URL::to('show/'. $post->id ), 'Consultar') }}

routes.php
Código PHP:
Ver original
  1. Route::get('show/{id}', 'PostController@show');

Controller PostController.php
Código PHP:
Ver original
  1. public function show($id)
  2.     {
  3.         $post = Post::find($id);
  4.         return View::make('post')->with('post', $post);
  5.        
  6.     }

vista para mostrar el resultado post.blade.php
Código PHP:
Ver original
  1. @foreach($post as $valor)
  2. {{ $valor->id  }}
  3.  @endforeach

y obtengo este error

ErrorException

Trying to get property of non-object


y dice que la linea es
Código PHP:
Ver original
  1. //{{ $valor->id  }}

que estoy haciendo mal?
  #2 (permalink)  
Antiguo 25/08/2013, 00:23
 
Fecha de Ingreso: mayo-2012
Mensajes: 49
Antigüedad: 12 años
Puntos: 2
Respuesta: Problema con aplicación creada en laravel

Hola, si estás obteniendo una fila y la recorres con un foreach pasa eso, quita el foreach y muestra, lo primero, envía bien los datos, en vez de:

Código PHP:
Ver original
  1. return View::make('post')->with('post', $post);

Haz :

Código PHP:
Ver original
  1. return View::make("post", array("post" => $post));

Devuelves un array, y después:

Código PHP:
Ver original
  1. {{ $valor->id  }}

Y te debe mostrar el resultado sin problemas, antes sería bueno que compruebes con un if si existe la fila o no, un saludo.

Última edición por israel965; 25/08/2013 a las 00:34
  #3 (permalink)  
Antiguo 25/08/2013, 07:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema con aplicación creada en laravel

israel965 gracias por responder , hice lo que me indicaste y me funciono perfecto

pero como haria el join entre las dos tablas users y posts para mostar el nombre del usuario
Código PHP:
Ver original
  1. $post = DB::table('posts')->join('users', 'posts.user_id', '=', $id)
  2.         ->select('users.username', 'posts.title', 'posts.body')
  3.         ->orderBy('posts.id','desc');
  4.         return View::make("post", array("post" => $post));

pero estoy obteniendo este error
Cita:

ErrorException

Undefined property: Illuminate\Database\Query\Builder::$id

esta es la consulta que debo de pasar a laravel, el 10 se debe de reemplazar por $id
Código SQL:
Ver original
  1. SELECT * FROM posts,users WHERE posts.id = 10 AND posts.user_id = users.id

de esta manera me funciona pero no deberia de ser asi
Código PHP:
Ver original
  1. $post = DB::select('SELECT * FROM posts,users WHERE posts.id ='. $id .'AND posts.user_id = users.id ');

Última edición por Montes28; 25/08/2013 a las 16:38
  #4 (permalink)  
Antiguo 26/08/2013, 20:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problema con aplicación creada en laravel

La consulta la construi de dos maneras:

Código PHP:
Ver original
  1. $post = DB::table('posts')->join('users', 'posts.user_id', '=', 'users.id')
  2.         ->select('users.username', 'posts.title', 'posts.body')
  3.         ->where('posts.id', $id)->get();

Código PHP:
Ver original
  1. $post = DB::table('posts')->join('users', 'posts.user_id', '=', 'users.id')
  2.         ->select('users.username', 'posts.title', 'posts.body', 'users.email')
  3.         ->where('posts.id', $id)->first();

con estas dos consultas obtengo los resultados , que diferencia existe? cual la de las dos

Última edición por Montes28; 26/08/2013 a las 21:04
  #5 (permalink)  
Antiguo 06/09/2013, 19:24
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: Problema con aplicación creada en laravel

si no me equivoco first te devuelve el primer registro encontrado y get() devuelve todos los que encuentra, como estas buscando por id (que seguro es unico) te trae un solo registro

Etiquetas: laravel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:36.