Добавление записи в БД с помощью Slim и Eloquent

#php #database #model-view-controller #eloquent #slim

#php #База данных #модель-представление-контроллер #eloquent #slim

Вопрос:

Я начинаю проект с использованием Slim и Eloquent, соединение с моей базой данных работает отлично. Моя проблема в том, что я не могу добавить запись в свою tests таблицу. Вот моя модель

 use PsrHttpMessageResponseInterface as Response;
use AppDomainTestTest;
use IlluminateHttpRequest;

class NewTestAction extends TestAction {

    protected function action(): Response {

        $data = $this->request->getParsedBody();
        $test = new Test;
        $test->id = $data["id"];
        $test->txt = $data["txt"];
        $test->save();
        return $this->respondWithData($test);

    }

}
  

Это работает, если я помещаю значения непосредственно в код, например

 $test->id = 1;
$test->txt = "test";
  

Я использую Postman для тестирования своего кода, я получил эту ошибку

 {
"statusCode": 500,
"error": {
    "type": "SERVER_ERROR",
       "description": "ERROR: Trying to access array offset on value of type null on line 18 in file /home/fiona/my_micro_service/my_micro_services/src/Application/Actions/Test/NewTestAction.php."
    }
}
  

Как я могу вставить базовую запись в свою БД?

Обновление с моей структурой и моделью таблицы

     TABLE tests
   (id int(11),
   txt VARCHAR(255),
    updated_at date,
    created_at date);
  

Модель :

 namespace AppDomainTest;
                        
class Test extends IlluminateDatabaseEloquentModel {
}
  

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

1. Пожалуйста, опубликуйте свой класс модели и структуру таблицы вашей базы данных, также было бы полезно.

2. Попробуйте отладить его, потому $data что это null в соответствии с ошибкой, о которой вы упомянули. Печать: $data чтобы понять, почему он возвращает пустой. возможно, причина getParsedBody не в возврате ожидаемого результата.

3. строка @odan 18 равна $test->txt = $data["txt"];

4. @ParminderSingh Да, данные кажутся нулевыми, я не понимаю, почему

5. @spock Ваша модель пуста. Вам нужно настроить его: laravel.com/docs/8.x/eloquent#eloquent-model-conventions