'json' ]; protected $fillable = [ 'name', 'sn', 'powered_by', 'type', 'model_sn', 'state', 'extends' ]; public function scopePoweredBy(Builder $query, string $factory): void { $query->whereHas('factory', fn ($query) => $query->where('key', $factory)); } protected function serializeDate(\DateTimeInterface $date){ return $date->format('Y-m-d H:i:s'); } public static function typeMap() { return [ self::TYPE_MONITOR => '监控设备', self::TYPE_SOIL => '土壤设备', // self::TYPE_WATER_QUALITY => '水质设备', self::TYPE_METEOROLOGICAL => '气象设备', self::TYPE_AIR => '通风设备', self::TYPE_ATOMIZING => '喷雾设备' ]; } public function logs(): HasMany { return $this->hasMany(DeviceLog::class); } public function factory() { return $this->belongsTo(Keyword::class, 'powered_by'); } public function isTypeSoil(): bool { return $this->type === static::TYPE_SOIL; } }