<?php

namespace app\model;

use think\Model;

class BpsGoogleAdsCampaign extends Model
{
    // 设置当前模型对应的完整数据表名称
    protected $table = 'bps_google_ads_campaign';

    // 设置主键
    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(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');
    }
}