#laravel #request
#laravel #запрос
Вопрос:
вот моя функция.
public function get(Request $request){
$bike1 = $request->input('bike1');
$bike2 = $request->input('bike2');
//dd($bike1);
return $bike2->name;
}
Когда я использую функцию dd, результат:
"{"id":1,"created_at":"2020-09-16T12:33:25.000000Z","updated_at":"2020-09-16T12:33:25.000000Z","name":"302r","brand":"benelli","price":800000,"displacement":300,"segment":"300cc","power":"28KW@10000 rpm","torque":"27Nm@9000rpm","fuel_delivery_system":"Efi","abs":"1","cooling_system":"Liquid","weight":155} ◀"
Но когда я пытаюсь получить доступ к свойству name (любому), я получаю сообщение об ошибке.
Trying to get property 'name' of non-object
Чего мне может не хватать?
Комментарии:
1. попробуйте
return $bike2['name'];
вместо `return $bike2->name;2. вы не можете использовать
$bike2->name;
, поскольку$bike2
это не какой-либо экземпляр класса. использовать$bike2['name'];
Ответ №1:
Похоже, что $bike1 — это строка JSON, прежде чем вы сможете получить доступ к ее атрибутам, вам нужно ее декодировать.
$bike1 = json_decode($request->input('bike1'));
return $bike1->name
Если это не сработает, $bike1 может быть массивом, а не объектом, в этом случае это должно сработать
return $bike1['name']
Комментарии:
1. да, это сработало с первым методом. большое вам спасибо.
Ответ №2:
вы пропустили, что вернули строку, а не объект
Комментарии:
1. как я могу вернуть его в объект?
Ответ №3:
сначала расшифруйте ваш json, а затем получите ваше имя
$bike2 = json_decode($request->input('bike2'));
return $bike2->name
Ответ №4:
Вам нужно декодировать $bike2
, потому что оно в формате JSON, поэтому вы можете сделать
$decoded_bike2 = json_decode($request->input('bike2'));
Это вернет объект
{#1236 ▼
"id": 1
"created_at": "2020-09-16T12:33:25.000000Z"
"updated_at": "2020-09-16T12:33:25.000000Z"
"name": "302r"
}
вы можете получить доступ к свойству name следующим образом
return $decoded_bike2->name;
Если вы сделаете
$decoded_bike2 = json_decode($request->input('bike2'), true);
Это вернет массив
array:4 [▼
"id" => 1
"created_at" => "2020-09-16T12:33:25.000000Z"
"updated_at" => "2020-09-16T12:33:25.000000Z"
"name" => "302r"
]
Вы можете получить доступ к имени ключа, например
return $decoded_bike2['name'];
Для получения более подробной информации о json_decode()
ссылке