'int', 'customer_id' => 'int', 'budget_amount_micros' => 'int', ]; // 默认值设置 protected $defaults = [ 'status' => 'ENABLED', // 活动状态默认值为 'ENABLED' 'advertising_channel_type' => 'SEARCH', // 广告渠道类型默认值为 'SEARCH' ]; // 状态判断常量 const STATUS_UNSPECIFIED = 0; const STATUS_UNKNOWN = 1; const STATUS_ENABLED = 2; const STATUS_PAUSED = 3; const STATUS_REMOVED = 4; // 获取活动状态 public function getStatusTextAttr($value, $data) { $statusMap = [ self::STATUS_UNSPECIFIED => 'UNSPECIFIED', self::STATUS_UNKNOWN => 'UNKNOWN', self::STATUS_ENABLED => 'ENABLED', self::STATUS_PAUSED => 'PAUSED', self::STATUS_REMOVED => 'REMOVED', ]; return $statusMap[$data['status']] ?? 'UNKNOWN'; } // 更新状态方法 // public function updateStatus($status) // { // if (!in_array($status, [self::STATUS_ENABLED, self::STATUS_PAUSED, self::STATUS_REMOVED])) { //// throw new \think\exception\ValidateException('Invalid status'); // } // $this->status = $status; // return $this->save(); // } // 判断当前活动状态 public function isEnabled() { return $this->status == self::STATUS_ENABLED; } public function isPaused() { return $this->status == self::STATUS_PAUSED; } public function isRemoved() { return $this->status == self::STATUS_REMOVED; } // 关联 Customer 模型(广告活动属于客户) // public function customer() // { // return $this->belongsTo(GoogleAdsCustomer::class, 'customer_id', 'customer_id'); // } // 关联 AdGroup 模型(一个广告活动下有多个广告组) public function adGroups() { return $this->hasMany(AdGroup::class, 'campaign_id', 'campaign_id'); } // 关联 Ad 模型(一个广告活动下有多个广告) public function ads() { return $this->hasManyThrough(Ad::class, GoogleAdsAdGroup::class, 'campaign_id', 'ad_group_id', 'campaign_id', 'ad_group_id'); } // 关联到广告数据表 public function adDayData() { return $this->hasMany(DayData::class, 'campaign_id', 'campaign_id'); } }