Я передаю запрос POST с 3 переменными
Id (Randomly Generated),
Name (Specified)
Capacity (Specified)
с поста Angular Service. Они находятся в полезной нагрузке 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();
}
В вышеупомянутом методе я получил исключение ошибки, заявляя:
«Попытка получить свойство необъекта»
Как я могу решить это?
Основываясь на вашем образце JSON, $data
должен содержать массив, который затем содержит один объект в своем первом индексе.
Поэтому вы не можете сделать, например, $data->id
потому что это предполагает, что $ data имеет свойство с именем $ id … это не так, объект в своем первом индексе делает.
Так просто $data[0]->id
позволит вам получить доступ к этому индексу, а затем получить доступ к свойству $ id объекта в этом индексе. Конечно, если ваш запрос содержит несколько элементов в массиве, вам может понадобиться использовать цикл, чтобы просмотреть их все и получить значения. Это зависит от того, что вы ожидаете и что вы собираетесь с этим делать.
Или, возможно, ваш PHP правильный, и ваш клиент отправляет данные в неправильном формате. Не ясно, каков желаемый результат на самом деле.
Редактировать:
Так как кажется, что $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();
}
Других решений пока нет …