#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