*/ protected $fillable = [ 'name', 'code', 'ip_address', 'mac_address', 'station_id', 'diagram_url', 'scada_data_url', 'scada_tags_url', 'is_online', 'last_online_at', ]; /** * 属性类型转换 * * @return array */ protected function casts(): array { return [ 'is_online' => 'boolean', 'last_online_at' => 'datetime', ]; } /** * 获取终端关联的知识库 * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function knowledgeBases() { return $this->belongsToMany(KnowledgeBase::class, 'terminal_knowledge_bases') ->withPivot('priority') ->withTimestamps() ->orderBy('priority'); } /** * 获取终端关联的指引 * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function guides() { return $this->belongsToMany(Guide::class, 'terminal_guides') ->withPivot('priority') ->withTimestamps() ->orderBy('priority'); } /** * 获取终端的提示词配置 * * @return \Illuminate\Database\Eloquent\Relations\HasOne */ public function prompt() { return $this->hasOne(TerminalPrompt::class); } /** * 配置活动日志选项 * * @return \Spatie\Activitylog\LogOptions */ public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logOnly(['name', 'code', 'station_id', 'diagram_url']) ->logOnlyDirty() ->setDescriptionForEvent(fn(string $eventName) => "终端已{$eventName}"); } }