невозможно сохранить данные из $ request в mysql с помощью Laravel 5.4 - PullRequest
0 голосов
/ 07 ноября 2018

Я передаю запрос POST с 3 переменными

Id (Randomly Generated), 
Name (Specified)
Capacity (Specified)  

из поста службы Angular. Они находятся в полезной нагрузке POST, а также отображаются в переменной $request в методе контроллера ресурсов Laravel "store ()".

public function store(Request $request)
{
    $servers = new Server();
    return $request->getContent(); 
}

Здесь, в инструменте разработчика Chrome> сеть> POST-запрос> при предварительном просмотре, я получаю это

[{name: "bakar", capacity: 50, id: 8012}]
0: {name: "bakar", capacity: 50, id: 8012} 

но когда я использую

public function store(Request $request)
{
    $servers = new Server();
    $data = $request->getContent();
    $servers->id = $data->id;
    $servers->name = $data->name;
    $servers->capacity = $data->capacity;
    $servers->save();
}

В приведенном выше методе я получил сообщение об ошибке:

«Попытка получить свойство необъекта»

Как я могу решить это?

1 Ответ

0 голосов
/ 07 ноября 2018

Исходя из вашего примера JSON, $data должен содержать массив, который затем содержит один объект в своем первом индексе.

Поэтому вы не можете сделать, например, $data->id поскольку предполагается, что $ data имеет свойство с именем $ id ... его нет, объект в своем первом индексе имеет.

Так что просто $data[0]->id позволит вам получить доступ к этому индексу, а затем получить доступ к свойству $ id объекта с этим индексом. Конечно, если ваш запрос содержал несколько элементов в массиве, вам может понадобиться использовать цикл, чтобы просмотреть их все и получить значения. Это зависит от того, что вы ожидаете, и что вы собираетесь с этим делать.

Или, возможно, ваш PHP верен, и ваш клиент отправляет данные в неправильном формате. Непонятно, каков на самом деле желаемый результат.


Edit:

Поскольку кажется, что $data по-прежнему является строкой JSON, когда она поступает в вашу функцию store (), вам необходимо ее декодировать. Итак, сначала напишите

$data = json_decode($request->getContent());

(вместо $data = $request->getContent();), а затем действуйте, как указано выше.

Полный образец:

public function store(Request $request)
{
    $servers = new Server();
    $data = json_decode($request->getContent());
    $servers->id = $data[0]->id;
    $servers->name = $data[0]->name;
    $servers->capacity = $data[0]->capacity;
    $servers->save();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...