欢迎您!我有问题要问你。我正在为Laravel 5.2中的飞行日志编写代码。在公式化器中,我将有起飞时间和到达时间,而且我不知道如何在laravel中计算时差并将其自动传递给数据库。因此,以最简单的方式,它将计算该时差,例如:takoeff-12 UTC到达-14UTC,然后将其作为飞行时数= 2保存到数据库中。

谢谢你的帮助

最佳答案

Laravel附带了Carbon,它为此提供了一个简单的帮助器:

$departure = Carbon::parse($myTakeoffTimestamp); // 12 UTC
$arrival = Carbon::parse($myArrivalTimestamp); // 14 UTC

$diff = $departure->diffInHours($arrival, false); // 2


要存储此数据:

Schema::create('flights', function(Blueprint $table){
    //other table stuff...

    $table->timestamp('departure');
    $table->timestamp('arrival');
    $table->timestamp('duration');
});


然后,您可以在控制器中执行以下操作:

public function store(Illuminate\Http\Request $request)
{
    $flight = new Flight;
    $flight->unguard();
    $flight->create([
        //your other flight info
        'departure' = Carbon::parse($myTakeoffTimestamp),
        'arrival' => Carbon::parse($myArrivalTimestamp),
        'duration' => $takeoff->diffInHours($arrival)
    ]);
}


由于timestamp()中的Schema builder定义在Carbon的默认格式(时间戳)下可以完美地工作,因此无需额外的工作即可通过此方法将其导入数据库。

10-06 04:32
查看更多