【问题标题】:Laravel insert diff between two times on model saveLaravel 在模型保存时插入两次差异
【发布时间】:2016-10-04 21:14:09
【问题描述】:

我正在创建一个 Laravel 项目,但我遇到了问题。

我正在尝试在保存模型之前将 2 个时间戳之间的差异保存到数据库中:

我的桌子:

  $table->increments('id');
    $table->time('from');
    $table->time('to');
    $table->time('diff');

所以..在插入之前,计算这两次之间的差异,并在同一时间插入。

这可能吗?有人可以帮助我吗?

谢谢,

【问题讨论】:

  • 你的意思是天、年还是秒的差异?
  • 小时和分钟的差异

标签: php mysql database laravel laravel-5


【解决方案1】:

你可以挂接到 save() 或 updates() 或 Creating()

所以在你的模型中添加上面的一个,这取决于你想钩住哪一个(如果我理解正确的话,我认为 save() )并实现如下:

public static function boot()
{
    parent::boot();
    static::saving(
        function ($table) {
            $table->diff = strtotime($table->to) - strtotime($table->from);
        }
    );
}

【讨论】:

  • 谢谢你!,保存我所做的正确差异: $table->diff = gmdate('H:i:s', (strtotime($table->to) - strtotime($table ->来自)));
【解决方案2】:

以秒为单位计算往返之间的差异:

$row = TableModel::find(123);

$diff = strtotime($row->to) - strtotime($row->from);
$row->diff = $diff;
$row->save();

【讨论】:

  • 好的,但是每次保存模型之前我怎么能这样做呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 2016-10-03
相关资源
最近更新 更多