Я получил запрос curl, который вызывает внешний API, и я сохранил ответ от него. Я уже сохранил предыдущие результаты, и теперь я хочу создать cronjob, который ежедневно вызывает функцию для обновления данных из нашего источника API. Но когда я заменяю insert
на updateOrInsert
метод на laravel, создатель запросов, это приводит меня к
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
Вот мой контроллер.
public function getProjectList(){
$this->getToken();
$request_time = Carbon::now()->format('YmdHis');
$sign = md5($this->token.$request_time);
$url = 'https://cgi.singmap.com/project/queryProject?request_time='.$request_time.
'&token='.$this->token.'&sign='.$sign.'';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch), true);
$trimmed = $response['datas'];
// dd($trimmed);
foreach ($trimmed as $res){
$inserts[]=[
'projectId' => $res['projectId'],
'projectName' => $res['projectName'],
'country' => $res['country'],
'location' => $res['location'],
'propertyGroup' => $res['propertyGroup'],
'latitude' => $res['country'],
'longitude' => $res['country'],
'unitsNum' => $res['unitsNum'],
'launchDate' => $res['launchDate'],
'launchDateAltText' => $res['launchDateAltText'],
'mainImage' => $res['mainImage'],
'min_price' => $res['min_price'],
'max_price' => $res['max_price'],
'streetAddress' => $res['streetAddress'],
'tenure' => $res['tenure'],
'developer' => $res['developer'],
'streetAddress' => $res['streetAddress'],
];
}
// \DB::table('xp_ecoprop_projectlist')->insert($inserts);
\DB::table('xp_ecoprop_projectlist')->updateOrInsert($inserts);
dd('Data Inserted');
}
Пример ответа
array:3 [▼
"code" => "0"
"msg" => "SUCCESS"
"datas" => array:127 [▼
0 => array:21 [▼
"propertyGroup" => "D09, D10, D11, D21"
"country" => "Singapore"
"launchDateAltText" => "Launched"
"latitude" => "1.30509901046753"
"galleryLatitude" => "1.30492997169495"
"relationId" => "175"
"launchDate" => "1555689600000"
"galleryLongitude" => "103.828666687012"
"unitsNum" => 154
"mainImage" => "https://img.singmap.com/upload/broke/2029c11d79004b5e915809fbd6e19f7b/0275d26811574de68834663514ee2878/imgs/ffc6d2435f5c43828eb9d2200c6186ff.png"
"max_price" => 35000000.0
"min_price" => 0.0
"streetAddress" => "86, 88 Orchard Boulevard"
"location" => "D10 - Tanglin / Holland"
"completionDate" => "1640966400000"
"developer" => "Granmil Holdings Pte Ltd"
"projectName" => "Boulevard 88 (D10)"
"projectId" => "0275d26811574de68834663514ee2878"
"tenure" => "Freehold"
"projectTitle" => "Boulevard 88 (D10)"
"longitude" => "103.827575683594"
]