气象监测日志模型和数据库迁移

dev
Jing Li 2022-10-19 10:16:45 +08:00
parent 370c3aaaf3
commit dd2b56a0d2
3 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,15 @@
<?php
namespace App\Enums;
enum WindDirection: int
{
case North = 0; // 北风
case Northeast = 1; // 东北风;
case East = 2; // 东风
case Southeast = 3; // 东南风
case South = 4; // 南方
case Southwest = 5; // 西南风
case West = 6; // 西风
case Northwest = 7; // 西北风
}

View File

@ -0,0 +1,39 @@
<?php
namespace App\Models;
use App\Enums\WindDirection;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MeteorologicalMonitoringLog extends Model
{
use HasFactory;
protected $casts = [
'wind_direction' => WindDirection::class,
'monitored_at' => 'datetime',
];
protected $fillable = [
'device_id',
'agricultural_base_id',
'wind_speed',
'wind_power',
'wind_direction',
'wind_degree',
'air_humidity',
'air_temperature',
'air_pressure',
'co2',
'noise',
'illumination',
'accumulated_rainfall',
'current_rainfall',
'moment_rainfall',
'day_rainfall',
'pm25',
'pm10',
'monitored_at',
];
}

View File

@ -0,0 +1,55 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('meteorological_monitoring_logs', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('device_id')->comment('设备ID');
$table->unsignedBigInteger('agricultural_base_id')->comment('农业基地ID');
$table->decimal('wind_speed', 8, 2)->nullable()->comment('风速 (单位: m/s)');
$table->integer('wind_power')->nullable()->comment('风力');
$table->tinyInteger('wind_direction')->nullable()->comment('风向: 0 北风, 1 东北风, 2 东风, 3 东南风, 4 南风, 5 西南风, 6 西风, 7 西北风');
$table->integer('wind_degree')->nullable()->comment('风向度数');
$table->decimal('air_humidity', 8, 2)->nullable()->comment('空气湿度 (单位: db)');
$table->decimal('air_temperature', 8, 2)->nullable()->comment('气温 (单位: db)');
$table->decimal('air_pressure', 8, 2)->nullable()->comment('气压 (单位: Kpa)');
$table->decimal('co2', 8, 2)->nullable()->comment('二氧化碳浓度 (单位: ppm)');
$table->decimal('noise', 8, 2)->nullable()->comment('噪声 (单位: db)');
$table->integer('illumination')->nullable()->comment('光照度 (单位: Lux)');
$table->decimal('accumulated_rainfall', 8, 2)->nullable()->comment('积雨量 (单位: mm)');
$table->decimal('current_rainfall', 8, 2)->nullable()->comment('当前雨量 (单位: mm)');
$table->decimal('moment_rainfall', 8, 2)->nullable()->comment('瞬时雨量 (单位: mm)');
$table->decimal('day_rainfall', 8, 2)->nullable()->comment('日雨量 (单位: mm)');
$table->integer('pm25')->nullable()->comment('PM2.5浓度 (单位: ug/m3)');
$table->integer('pm10')->nullable()->comment('PM10浓度 (单位: ug/m3)');
$table->timestamp('monitored_at')->comment('监控时间(小时)');
$table->timestamps();
// 索引
$table->index('device_id');
$table->index('agricultural_base_id');
$table->unique('monitored_at');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('meteorological_monitoring_logs');
}
};