Ответ Laravel — это строка вместо int

#php #laravel

#php #laravel

Вопрос:

 public function create(Request $request){
    $comment = new Comment;
    $comment->user_id = Auth::user()->id;
    $comment->post_id = $request->id; //here is where the response is string
    $comment->comment = $request->comment;
    $comment->save();
    $comment->user;

    return response()->json(
        $comment,
    );
}
  

Я не знаю, почему ответом является string id, а при миграции базы данных таблица $table->unsignedBigInteger('post_id'); post_id должна быть целочисленной..

 {
"user_id": 4,
"post_id": "2", //response is string 
"comment": "test string id finale",
"updated_at": "2020-10-31T19:55:49.000000Z",
"created_at": "2020-10-31T19:55:49.000000Z",
"id": 11,
}
  

Комментарии:

1. Приведите значение к int с (int) помощью . Все значения в запросе являются строками .

2. хорошо, это работает … но как это происходит со строкой?

3. Потому что клиент отправляет на сервер строки .

Ответ №1:

Перейдите к своей модели комментариев и добавьте:

     protected $casts = [
    'post_id' => 'integer',
    ];
  

И строка (которая всегда пересылается в запросе) должна быть преобразована в int в модели (а затем в конечном итоге в JSON в виде числа).