覆盖更新数据库数据

This commit is contained in:
hgc 2024-12-20 15:24:22 +08:00
parent bd4be3b989
commit ba50f79c55
2 changed files with 43 additions and 24 deletions

View File

@ -69,7 +69,7 @@ class GoogleAdsAdService
$googleAdsClient = $this->googleAdsClient;
// Creates a single shared budget to be used by the campaigns added below.
$groupadsResourceName = self::getAds($googleAdsClient, $customerId);
dump(json_encode($groupadsResourceName));
// dump(json_encode($groupadsResourceName));
if (is_array($groupadsResourceName)) {
self::saveAds($groupadsResourceName);
}

View File

@ -341,10 +341,27 @@ class GoogleAdsCampaignService
{
$tableName = 'bps_google_ads_campaign';
$tableName = getenv('DB_PG_SCHEMA')? getenv('DB_PG_SCHEMA').'.'.$tableName: 'public'.$tableName;
// foreach ($campaignsResourceName as $data) {
// $sql = "INSERT INTO {$tableName}
// (campaign_id, customer_id, campaign_name, status, advertising_channel_type, start_date, end_date, budget_amount_micros)
// VALUES (:campaign_id, :customer_id, :campaign_name, :status, :advertising_channel_type, :start_date, :end_date, :budget_amount_micros)";
// ThinkDb::execute($sql, $data);
// }
foreach ($campaignsResourceName as $data) {
$sql = "INSERT INTO {$tableName}
(campaign_id, customer_id, campaign_name, status, advertising_channel_type, start_date, end_date, budget_amount_micros)
VALUES (:campaign_id, :customer_id, :campaign_name, :status, :advertising_channel_type, :start_date, :end_date, :budget_amount_micros)";
$sql = "INSERT INTO {$tableName}
(campaign_id, customer_id, campaign_name, status, advertising_channel_type, start_date, end_date, budget_amount_micros)
VALUES (:campaign_id, :customer_id, :campaign_name, :status, :advertising_channel_type, :start_date, :end_date, :budget_amount_micros)
ON CONFLICT (campaign_id)
DO UPDATE SET
customer_id = EXCLUDED.customer_id,
campaign_name = EXCLUDED.campaign_name,
status = EXCLUDED.status,
advertising_channel_type = EXCLUDED.advertising_channel_type,
start_date = EXCLUDED.start_date,
end_date = EXCLUDED.end_date,
budget_amount_micros = EXCLUDED.budget_amount_micros,
update_at = EXCLUDED.update_at"; // 你可以根据实际情况决定是否需要更新时间戳
ThinkDb::execute($sql, $data);
}
}
@ -358,29 +375,31 @@ class GoogleAdsCampaignService
public static function saveDateDatas($dayResourceName)
{
// dump($campaignsResourceName);
// $dayDataModel = new DayDataModel;
// $list = $campaignsResourceName;
// ThinkDb::execute("update public.ad_ga_campaign_budgets set name='thinkphp999' where id=2");
// $dayDataModel->saveAll($dayResourceName);
// $dayResourceName = [
// 'ad_id' => 725809753919,
// 'customer_id' => 4060397299,
// 'ad_name' => '',
// 'ad_resource_name' => 'customers/4060397299/ads/725809753919',
// 'ad_group_id' => 171788435506,
// 'campaign_id' => 22026467676,
// 'clicks' => 0,
// 'cost_micros' => 0,
// 'conversions' => 0,
// 'conversions_value' => 0,
// 'impressions' => 0,
// 'date' => '2024-12-18',
// ];
foreach ($dayResourceName as $data) {
$sql = "INSERT INTO public.bps_google_ad_day_data (ad_id, customer_id, ad_name, ad_resource_name, ad_group_id, campaign_id, clicks, cost_micros, conversions, conversions_value, impressions, date)
VALUES (:ad_id, :customer_id, :ad_name, :ad_resource_name, :ad_group_id, :campaign_id, :clicks, :cost_micros, :conversions, :conversions_value, :impressions, :date)";
// $sql = "INSERT INTO public.bps_google_ad_day_data (ad_id, customer_id, ad_name, ad_resource_name, ad_group_id, campaign_id, clicks, cost_micros, conversions, conversions_value, impressions, date)
// VALUES (:ad_id, :customer_id, :ad_name, :ad_resource_name, :ad_group_id, :campaign_id, :clicks, :cost_micros, :conversions, :conversions_value, :impressions, :date)";
// ThinkDb::execute($sql, $data);
$sql = "INSERT INTO public.bps_google_ad_day_data
(ad_id, customer_id, ad_name, ad_resource_name, ad_group_id, campaign_id, clicks, cost_micros, conversions, conversions_value, impressions, date)
VALUES (:ad_id, :customer_id, :ad_name, :ad_resource_name, :ad_group_id, :campaign_id, :clicks, :cost_micros, :conversions, :conversions_value, :impressions, :date)
ON CONFLICT (ad_id, date) -- 假设 (ad_id, date) 为唯一约束
DO UPDATE SET
customer_id = EXCLUDED.customer_id,
ad_name = EXCLUDED.ad_name,
ad_resource_name = EXCLUDED.ad_resource_name,
ad_group_id = EXCLUDED.ad_group_id,
campaign_id = EXCLUDED.campaign_id,
clicks = EXCLUDED.clicks,
cost_micros = EXCLUDED.cost_micros,
conversions = EXCLUDED.conversions,
conversions_value = EXCLUDED.conversions_value,
impressions = EXCLUDED.impressions,
update_at = EXCLUDED.update_at"; // 更新其他字段和更新时间戳
ThinkDb::execute($sql, $data);
}
}