Мне сложно записывать json-вход в laravel. Я создаю Restful API и когда я отправляю данные post с помощью RestClient, а затем умираю и сбрасываю в laravel, я получил
object(Symfony\Component\HttpFoundation\ParameterBag)#205 (1) { ["parameters":protected]=> array(6) { ["firstName"]=> string(8) "John" ["lastName"]=> string(7) "Doe" ["bloodGroup"]=> string(2) "B+" ["phone"]=> string(8) "+9999999" ["address"]=> string(8) "Somecity" ["symptoms"]=> string(3) "Bla" } }
Теперь я привязался к доступу к данным, используя
$data = Input::json(); echo $data->firstName;
что не работает .. пытался преобразовать его в массив, а затем получить доступ, как $data['firstName']
не работает.
array(1) { ["*parameters"] => array(6) { ["firstName"]=> string(8) "John" ["lastName"]=> string(7) "Doe" ["bloodGroup"]=> string(2) "B+" ["phone"]=> string(8) "+9999999" ["address"]=> string(8) "Somecity" ["symptoms"]=> string(3) "Bla" } }
Я хочу, чтобы декодировать данные, а затем сохранить его в db. Вот учебник, похожий на приложение.
Я пробовал метод post_index (), описанный здесь, но не повезло.
http://maxoffsky.com/maxoffsky-blog/building-restful-api-in-laravel-part-2-design-api-controller/
Вы можете использовать ->get()
для доступа к свойствам из ответа Symfony\Component\HttpFoundation\ParameterBag
.
$input = Input::json(); $input->get('firstName')
Вы также можете получить все входы в виде массива, а затем ввести приведение объекта в объект (object)
. Обратите внимание, что это приведет к ошибке, если ваше свойство не существует, поэтому, если я, где вы, я бы использовал метод ->get()
упомянутый выше.
$input = (object)Input::all(); $input->firstName;
Основываясь на моем эксперименте
Если вы отправляете массив из нескольких объектов, таких как следующий пример из Javascript, используя JSON
[{crop_id: 1, test_id: 6},{crop_id: 1, test_id: 7},{crop_id: 1, test_id: 8}]
Вам нужно использовать функцию Input :: json () -> all () в PHP.
$arr = Input::json()->all(); $crop_id = $arr[0]['crop_id']; $test_id = $arr[0]['test_id'];