Я получаю ошибку 500, когда пытаюсь вернуть значение из объекта / массива PHP.Но это нормально, вернуть все объекты - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь создать простое приложение в Laravel, которое отправляет и получает комментарии из базы данных.

Я использую как PHP, так и JS с AJAX. Но когда я пытаюсь получить полный объект комментария:

PHP

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

Хорошо работает:

[{…}]
  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)

Это именно то, что я ожидал увидеть, полный объект PHP. Но когда я пытаюсь вернуть или просто использовать один атрибут этого же объекта, я получаю ошибку 500 ...

return $comment->id;

.

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

Я новичок в PHP, поэтому это должна быть очень простая ошибка.

Ответы [ 4 ]

0 голосов
/ 21 сентября 2018

Вы можете использовать

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

или

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

Если вы используете json_decode после извлечения данных, объект будет преобразован в массив. Таким образом, вы должны использовать $ arrayname ['keyname'] для выборка данных.

0 голосов
/ 16 сентября 2018

Чтобы получить одну строку, вы должны использовать first () вместо get ()

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

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

0 голосов
/ 17 сентября 2018

Вы получаете ошибку 500, потому что json_decode() возвращает массив, а не объект. Поэтому для доступа к вашим данным используйте синтаксис массива, а не оператор объекта:

return $comment['id']
0 голосов
/ 16 сентября 2018

Попробуйте это:

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

Вам не нужно json_decode () возвращать значение DB :: table () ... call.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...