You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel实现点击按钮更新pins表pin_date字段为当前时间

解决Pin记录pin_date字段更新问题

你目前的代码只是查询到了对应的Pin记录,但没有给pin_date字段设置值,所以调用save()时不会对数据库做任何更新。下面是具体的修复方案:

方案一:通过模型实例更新(直观易读)

修改控制器中的pinDate方法,在保存前为pin_date赋值当前日期时间:

public function pinDate($id) {
    // 使用findOrFail替代find,避免找不到记录时出现空对象错误
    $pin = Pin::findOrFail($id);
    // 用Laravel的now()助手函数获取当前符合格式的日期时间
    $pin->pin_date = now();
    $pin->save();

    // 可选:添加响应反馈,比如返回原页面并提示成功
    return back()->with('success', 'Pin日期已成功更新');
}

方案二:直接通过查询构造器更新(更高效)

如果不需要操作模型的其他逻辑,可以直接用update方法完成,不需要实例化模型:

public function pinDate($id) {
    Pin::where('id', $id)->update(['pin_date' => now()]);

    return back()->with('success', 'Pin日期已成功更新');
}

额外注意:确保前端表单携带CSRF令牌

因为你的路由是POST类型,Laravel默认启用CSRF保护,所以前端的表单必须包含CSRF令牌,否则会返回419错误。示例Blade表单代码:

<form action="{{ route('pins.pin-date', ['id' => $pin->id]) }}" method="POST">
    @csrf
    <button type="submit">更新Pin日期</button>
</form>

(也可以直接写URL路径,但给路由加个名字会更便于维护:Route::post('/pins/pin-date/{id}', 'PinsController@pinDate')->name('pins.pin-date');)

这样修改后,点击按钮就能成功把对应记录的pin_date字段更新为当前日期时间了。

内容的提问来源于stack exchange,提问作者L. Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:33:43