Estoy tratando de crear una aplicación simple en Laravel que envíe y reciba comentarios de la base de datos.

Estoy usando PHP y JS con AJAX. Pero cuando trato de obtener el objeto de comentario completo:

Php

    public function UpdateComment(Request $request){
        $id = $request->id;
        $jsonCode = DB::table('comments')->where('id', $id)->get();
        $comment = json_decode($jsonCode);
        return $comment
    }

Funciona bien:

[{…}]
  0:
   author_id: 6
   comment_date: "2018-09-15 09:53:01"
   comment_text: "23423434234"
   history: ""
   id: 60
   last_update: "2018-09-15 00:00:00"
  >proto__: Object
  length: 1
>proto__: Array(0)

Esto es exactamente lo que esperaba ver, el objeto PHP completo. Pero cuando intento regresar o simplemente usar un solo atributo de este mismo objeto, recibo un error 500 ...

return $comment->id;

.

POST http://laravelhost/update-comment 500 (Internal Server Error)

Soy un principiante en PHP, por lo que debería ser un error muy simple.

0
Guilherme Carvalho 16 sep. 2018 a las 05:22

4 respuestas

La mejor respuesta

Obtiene el error 500 porque json_decode() devuelve una matriz, no un objeto. Entonces, para acceder a sus datos, use la sintaxis de matriz, en lugar del operador de objeto:

return $comment['id']
0
RDev 17 sep. 2018 a las 04:34

Prueba esto:

public function UpdateComment(Request $request){
    $id = $request->id;
    $record = DB::table('comments')->where('id', $id)->get();
    return $record;
}

No necesita json_decode () el valor de retorno de DB :: table () ... call.

0
gmarintes 16 sep. 2018 a las 02:31

Para recuperar una sola fila, debe usar first () en lugar de get ()

$comment = DB::table('comments')->where('id', $id)->first();
echo $comment->id;

https://laravel.com/docs/5.7/queries

0
Sandi Rosyandi 16 sep. 2018 a las 03:40

Puedes usar

$comment = DB::table('comments')->where('id', $id)->first();
return $comment->id;

O

$comment = DB::table('comments')->where('id', $id)->get();
return $comment[0]->id;

Si está utilizando json_decode después de recuperar datos, el objeto convertido a matriz. Por lo tanto, debe usar $ arrayname ['keyname'] para recuperacion de datos.

0
reshma 14 dic. 2018 a las 05:50