初始化创建model

This commit is contained in:
hgc 2024-12-19 15:02:01 +08:00
parent 1eec1d05f4
commit 0aa204eb9a
5 changed files with 218 additions and 23 deletions

View File

@ -6,12 +6,41 @@ use think\Model;
class Ad extends Model
{
protected $table = 'ad_ga_ads';
protected $primaryKey = 'id';
// 设置当前模型对应的完整数据表名称
protected $table = 'bps_google_ads_ad';
// 设置主键
protected $pk = 'ad_id';
// 设置自动时间戳
protected $autoWriteTimestamp = true;
// 定义时间戳字段
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
// 设置字段类型和默认值
protected $casts = [
'ad_id' => 'int',
'ad_group_id' => 'int',
'customer_id' => 'int',
];
// 默认值设置
protected $defaults = [
'status' => 'ENABLED', // 广告状态默认值为 'ENABLED'
];
// 关联 AdGroup 模型(广告属于广告组)
// 即使没有外键约束,依然可以使用 belongsTo 访问 AdGroup 数据
public function adGroup()
{
return $this->belongsTo(AdGroup::class, 'ad_group_id', 'id');
return $this->belongsTo(GoogleAdsAdGroup::class, 'ad_group_id', 'ad_group_id');
}
}
// 关联 Customer 模型(广告属于客户)
// public function customer()
// {
// return $this->belongsTo(GoogleAdsCustomer::class, 'customer_id', 'customer_id');
// }
}

View File

@ -6,12 +6,48 @@ use think\Model;
class AdGroup extends Model
{
protected $table = 'ad_ga_ad_groups';
protected $primaryKey = 'id';
// 设置当前模型对应的完整数据表名称
protected $table = 'bps_google_ads_ad_group';
// 设置主键
protected $pk = 'ad_group_id';
// 设置自动时间戳
protected $autoWriteTimestamp = true;
// 定义时间戳字段
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
// 设置字段类型和默认值
protected $casts = [
'ad_group_id' => 'int',
'campaign_id' => 'int',
'customer_id' => 'int',
'cpc_bid_micros' => 'int',
];
// 默认值设置
protected $defaults = [
'cpc_bid_micros' => 0, // 每次点击出价默认值为0
];
// 关联 Campaign 模型(广告组属于广告活动)
public function campaign()
{
return $this->belongsTo(Campaign::class, 'campaign_id', 'id');
return $this->belongsTo(Campaign::class, 'campaign_id', 'campaign_id');
}
// 关联 Customer 模型(广告组属于客户)
// public function customer()
// {
// return $this->belongsTo(GoogleAdsCustomer::class, 'customer_id', 'customer_id');
// }
// 关联 Ad 模型(广告组包含多个广告)
public function ads()
{
return $this->hasMany(Ad::class, 'ad_group_id', 'ad_group_id');
}
}

View File

@ -4,17 +4,49 @@ namespace app\model;
use think\Model;
class Campaign extends PgBaseModel
class BpsGoogleAdsCampaign extends Model
{
protected $table = 'ad_ga_campaigns'; // 对应数据库表名
protected $primaryKey = 'id'; // 主键
protected $autoWriteTimestamp = true; // 自动时间戳
protected $createTime = 'created_at'; // 创建时间字段
protected $updateTime = 'updated_at'; // 更新时间字段
// 设置当前模型对应的完整数据表名称
protected $table = 'bps_google_ads_campaign';
// 关联广告预算
public function campaignBudget()
// 设置主键
protected $pk = 'campaign_id';
// 设置自动时间戳
protected $autoWriteTimestamp = true;
// 定义时间戳字段
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
// 设置字段类型和默认值
protected $casts = [
'campaign_id' => 'int',
'customer_id' => 'int',
'budget_amount_micros' => 'int',
];
// 默认值设置
protected $defaults = [
'status' => 'ENABLED', // 活动状态默认值为 'ENABLED'
'advertising_channel_type' => 'SEARCH', // 广告渠道类型默认值为 'SEARCH'
];
// 关联 Customer 模型(广告活动属于客户)
public function customer()
{
return $this->belongsTo(CampaignBudget::class, 'budget_id', 'id');
return $this->belongsTo(GoogleAdsCustomer::class, 'customer_id', 'customer_id');
}
}
// 关联 AdGroup 模型(一个广告活动下有多个广告组)
public function adGroups()
{
return $this->hasMany(GoogleAdsAdGroup::class, 'campaign_id', 'campaign_id');
}
// 关联 Ad 模型(一个广告活动下有多个广告)
public function ads()
{
return $this->hasManyThrough(GoogleAdsAd::class, GoogleAdsAdGroup::class, 'campaign_id', 'ad_group_id', 'campaign_id', 'ad_group_id');
}
}

View File

@ -6,12 +6,38 @@ use think\Model;
class CampaignBudget extends Model
{
protected $table = 'ad_ga_campaign_budgets';
protected $primaryKey = 'id';
// 设置当前模型对应的完整数据表名称
protected $table = 'bps_google_ads_budget';
// 设置主键
protected $pk = 'budget_id';
// 设置自动时间戳
protected $autoWriteTimestamp = true;
public function campaigns()
{
return $this->hasMany(Campaign::class, 'budget_id', 'id');
}
// 定义时间戳字段
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
// 设置字段类型和默认值
protected $casts = [
'budget_id' => 'int',
'customer_id' => 'int',
'amount_micros' => 'int',
'start_date' => 'date',
'end_date' => 'date',
];
// 默认值设置
protected $defaults = [
'amount_micros' => 0, // 预算金额默认0
];
// 关联 Customer 模型(预算与客户相关)
// public function customer()
// {
// return $this->belongsTo(GoogleAdsCustomer::class, 'customer_id', 'customer_id');
// }
// 可以根据需要添加其他关联方法假设有其他与预算相关的表例如广告系列campaign
}

72
app/model/DayData.php Normal file
View File

@ -0,0 +1,72 @@
<?php
namespace app\model;
use think\Model;
class DayData extends Model
{
// 设置当前模型对应的完整数据表名称
protected $table = 'bps_google_ad_day_data';
// 设置复合主键
protected $pk = ['ad_id', 'date'];
// 设置自动时间戳
protected $autoWriteTimestamp = true;
// 定义时间戳字段
protected $createTime = 'create_at';
protected $updateTime = 'update_at';
// 设置字段类型和默认值
protected $casts = [
'ad_id' => 'int',
'customer_id' => 'int',
'clicks' => 'int',
'cost_micros' => 'int',
'conversions' => 'int',
'conversions_value' => 'float',
'impressions' => 'int',
'date' => 'date',
];
// 默认值设置
protected $defaults = [
'clicks' => 0,
'cost_micros' => 0,
'conversions' => 0,
'conversions_value' => 0.0,
'impressions' => 0,
];
// 关联 Campaign 模型(报告数据属于广告活动)
public function campaign()
{
return $this->belongsTo(GoogleAdsCampaign::class, 'campaign_id', 'campaign_id');
}
// 关联 AdGroup 模型(报告数据属于广告组)
public function adGroup()
{
return $this->belongsTo(GoogleAdsAdGroup::class, 'group_id', 'group_id');
}
// 关联 Ad 模型(报告数据属于广告)
public function ad()
{
return $this->belongsTo(GoogleAdsAd::class, 'ad_id', 'ad_id');
}
// 关联 Customer 模型(报告数据与客户相关)
// public function customer()
// {
// return $this->belongsTo(GoogleAdsCustomer::class, 'customer_id', 'customer_id');
// }
// 关联 Budget 模型(报告数据与预算相关)
public function budget()
{
return $this->belongsTo(GoogleAdsBudget::class, 'budget_id', 'budget_id');
}
}