#laravel #api #rest #laravel-8
Вопрос:
Я получил данные json из API и хочу сохранить их в своей базе данных.
образец json данных :
{
"success": true,
"data": [
{
"status_employee_id": "1",
"name": "Manager"
},
{
"status_employee_id": "2",
"name": "Staff"
},
{
"status_employee_id": "3",
"name": "OB"
},
{
"status_employee_id": "4",
"name": "Fired"
},
{
"status_employee_id": "5",
"name": "Retired"
}
]
}
Моя модель
class StatusEmployee extends Model
{
use HasFactory;
protected $table = 'status_employee';
protected $fillable = [
'status_employee_id','name'
];
public $timestamps = false;
}
Я пробовал использовать это в своем контроллере
public function store()
{
$client = new GuzzleHttpClient();
$res = $client->request('GET', 'http://xx.xx.xx.xx/tools/public/get_status_employee');
$datas = json_decode($res->getBody(), true);
foreach($datas as $data){
StatusEmployee::create([
'status_employee_id' => $data->status_employee_id,
'name' => $data->name,
]);
}
}
И я хочу сохранить образец json данных в моей таблице status_employee. Как это сделать?
Комментарии:
1. что вы пробовали до сих пор ? в чем заключается вопрос?
Ответ №1:
Это просто, Laravel Eloquent сделает все за вас.
// If json is in string decode first
$data = json_decode($res->getBody(), true); // to array
// Eloquent approach
StatusEmployee::insert(@$data['data']);
Ответ №2:
Я предполагаю, что вы используете Laravel, так как вы упомянули Laravel в своих тегах.
DB::table('status_employee')->insert(json_decode($res->getBody(),true)['data']);
Комментарии:
1. Я добавил более подробную информацию о контроллере в свой вопрос