mysql不支持timestamp_mysql中的timestamps字段不起作用

为什么我设置了某个字段类型为timestamps,但是他并没有像我预期的一样在更新或者添加的时候自动填充当前时间戳?

还有我用Laravel的migrate生成的数据表也一样,生成的表里面那个timestamps字段根本不起效果。是怎么回事?

这是migration文件

<?php

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Database\Migrations\Migration;

class CreateEquip extends Migration

{

/**

* Run the migrations.

*

* @return void

*/

public function up()

{

Schema::create('equip', function (Blueprint $table) {

// $table->increments('id');

$table->smallInteger('equip_id')->unsigned()->comment('装备id');

$table->string('eqiup_name')->comment('装备名称');

$table->string('eqiup_desc')->comment('装备描述');

$table->timestamps();

$table->primary('equip_id');

});

}

/**

* Reverse the migrations.

*

* @return void

*/

public function down()

{

//

}

}

你根本就没用Model来做数据库的操作,和timestamps是否是

CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

的设置无关

Laravel 是 5.1+

Laravel是建议表名是复数的,你的表名应该为

equips

Laravel要求主键,并且名字建议为id,你的主键换名字了

要new 一个Model文件

app/Equip.php

这个类会自动指向

equips

use Illuminate\Database\Eloquent;

class Equip extends Model

{

//这3行是管理主键的

protected $primaryKey = 'equip_id';

public $incrementing = true; //主键是自增的

protected $keyType = 'int'; //主键类型

//如果要强制指定table名,取消注释下行,不然laravel会自动找equips表

//protected $table = 'equip';

}

操作

$e = Equip::create([

'eqiup_name' => 'wwww',

'eqiup_desc' => 'xxxx',

]);

$e->update([

'eqiup_name' => 'yyyy',

]);

你如果是这么弄的,Laravel仍然没有自动维护

created_at

updated_at

我把头给你当凳子坐,毕竟我用Laravel都2年多了,不关闭timestamps,是不可能出现你的情况的

你设置timestamp 字段

ON UPDATE CURRENT_TIMESTAMP

了吗

laravel设置下默认值

$table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));

谢邀。

默认 Eloquent 会自动维护数据库表的

created_at

和 updated_at 字段。只要把这两个「时间戳」字段加到数据库表, Eloquent 就会处理剩下的工作。如果不想让 Eloquent 自动维护这些字段,把下面的属性加到模型类里:

// 关闭自动更新时间戳

class User extends Eloquent {

protected $table = 'users';

public $timestamps = false;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值