Laravel `delete()` 影响其他时间戳列
Laravel `delete()` affecting other timestamp columns
我正在使用 Laravel 软删除以便 "delete" 一条记录。但是发生了一些奇怪的事情,用于软删除记录的 delete()
命令显然影响了我 table 中的其他时间戳行,但它不应该影响,除非我错过了一些关键的东西。
我的模型(只包含相关部分,命名空间都正确包含):
use SoftDeletes;
protected $fillable = [ 'card_id', 'expiry_date' ]; // where expiry_date is the timestamp row being affected.
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
我的控制器:
public function destroy(IdCardFormRequest $request, $id)
{
$idCard = IdCard::find($id);
if(isset($idCard )){
$operationStatus = $idCard ->delete();
if($operationStatus) {
$request->session()->flash('status', 'success');
$request->session()->flash('message', 'Id card deleted successfully');
return redirect()->route('admin.id-card.index');
}
}
}
问题
当我使用适当的路由启动删除过程时,MySql 数据行被正确软删除,但另一个基于时间戳的行,即 expiry_date
被更新为当前时间戳。我已经阅读了 Laravel 中与软删除相关的整个文档,它没有提到其他时间戳列会受到影响。
编辑:
我已经用 dateTime()
而不是 timestamp()
解决了这个问题。我仍然不确定这是解决此问题的正确方法
根据您使用的数据库,日期时间和时间戳列类型可能会做不同的事情。
例如在MariaDB/MySQL中,datetime只是一种以特定格式保存日期和时间的列类型。
timestamp 列类型也包含日期和时间,但会在记录为 added/updated 时自动更新,除非明确覆盖。
来自 MariaDB 文档:
The timestamp field is generally used to define at which moment in time a row was added or updated and by default will automatically be assigned the current datetime when a record is inserted or updated.
我正在使用 Laravel 软删除以便 "delete" 一条记录。但是发生了一些奇怪的事情,用于软删除记录的 delete()
命令显然影响了我 table 中的其他时间戳行,但它不应该影响,除非我错过了一些关键的东西。
我的模型(只包含相关部分,命名空间都正确包含):
use SoftDeletes;
protected $fillable = [ 'card_id', 'expiry_date' ]; // where expiry_date is the timestamp row being affected.
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
我的控制器:
public function destroy(IdCardFormRequest $request, $id)
{
$idCard = IdCard::find($id);
if(isset($idCard )){
$operationStatus = $idCard ->delete();
if($operationStatus) {
$request->session()->flash('status', 'success');
$request->session()->flash('message', 'Id card deleted successfully');
return redirect()->route('admin.id-card.index');
}
}
}
问题
当我使用适当的路由启动删除过程时,MySql 数据行被正确软删除,但另一个基于时间戳的行,即 expiry_date
被更新为当前时间戳。我已经阅读了 Laravel 中与软删除相关的整个文档,它没有提到其他时间戳列会受到影响。
编辑:
我已经用 dateTime()
而不是 timestamp()
解决了这个问题。我仍然不确定这是解决此问题的正确方法
根据您使用的数据库,日期时间和时间戳列类型可能会做不同的事情。
例如在MariaDB/MySQL中,datetime只是一种以特定格式保存日期和时间的列类型。
timestamp 列类型也包含日期和时间,但会在记录为 added/updated 时自动更新,除非明确覆盖。
来自 MariaDB 文档:
The timestamp field is generally used to define at which moment in time a row was added or updated and by default will automatically be assigned the current datetime when a record is inserted or updated.