mysql - 使用 laravel 更新日期时间列

标签 mysql database laravel eloquent laravel-5.6

我的数据库中有一个带有 pin_date 列的引脚表。

在我的迁移中,我有这个:

$table->dateTime('pin_date')->nullable();

我有一个指向发布路径的按钮

Route::post('/pins/pin-date/{id}', 'PinsController@pinDate');

导致 pinDate Controller 方法:

public function pinDate($id)
{
    $pin = Pin::find($id);

    $pin->save();
}

我想在单击按钮并点击路线时将数据库中的 pin-date 列更新为当前日期和时间。我不太确定该怎么做。任何帮助将不胜感激!谢谢!

最佳答案

我会在模型保存时执行此操作,您可以绑定(bind)到模型boot函数并将其设置在那里:

public static function boot()
{
    parent::boot();

    static::saving(function($pin) {
        $pin->pin_date = \Carbon::now()
    });
}

如果您想更新此值而不是在每次保存模型时都处理它 - 例如通过单击按钮,您可以使用 Ajax。您将需要 1.) 路由,2.) 点击处理程序,3.) AJAX 请求和 4.) 处理请求的 Controller :

使用 Ajax 的点击处理程序:

$('.btn').on('click', function(e) {
    $.ajax({
        url: '/route/to/update/my/pin' + $(this).closest('.pin').data('id')
    });
});

然后是一条路线:

Route::post('/route/to/update/my/pin/{id}', 'PinController@updatePinDate');

然后制作 Controller 方法并相应地更新它:

public function updatePinDate(Request $request, Pin $pin)
{
    $pin->pin_date = \Carbon::now();
    $pin->save();
}

如果您不想使用 javascript,您可以只使用具有相同路由/ Controller 方法的标准表单:

<form action="/route/to/update/my/pin/{{ $pin->id }}" method="POST">
     {{csrf_field()}}

     <button type="Submit"> Update Pin Date </button>
</form>

关于mysql - 使用 laravel 更新日期时间列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49700208/

相关文章:

php - 面向对象的数据库连接

ruby-on-rails - rails ActiveRecord : legacy table without primary key shows nil for result?

sql - 在配置文件中存储 SQL 查询?

MySQL单表互条件查询

php - 在 ModelFactory Laravel 中播种多个自定义行/条目

php - laravel firstOrCreate 无法正常工作?

php - 在 Laravel 中使用 HTTP Basic Auth 注销

php - 如何创建 select 语句 PDO 并以 $row ['field' 结束]

java - Mybatis如何运行sql "desc table"

php - 从数据库中的两个表获取信息,其中 id 与数组匹配?