필드 유형을 타임스탬프로 설정했는데 예상대로 업데이트하거나 추가할 때 현재 타임스탬프가 자동으로 채워지지 않는 이유는 무엇입니까?
Laravel의 마이그레이션을 사용하여 생성한 데이터 테이블도 마찬가지입니다. 생성된 테이블의 타임스탬프 필드는 전혀 효과가 없습니다. 무슨 일이야?
마이그레이션 파일입니다
<code><?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() { // } } </code>
필드 유형을 타임스탬프로 설정했는데 예상대로 업데이트하거나 추가할 때 현재 타임스탬프가 자동으로 채워지지 않는 이유는 무엇입니까?
Laravel의 마이그레이션을 사용하여 생성한 데이터 테이블도 마찬가지입니다. 생성된 테이블의 타임스탬프 필드는 전혀 효과가 없습니다. 무슨 일이야?
마이그레이션 파일입니다
<code><?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() { // } } </code>
타임스탬프 필드를 설정하셨나요ON UPDATE CURRENT_TIMESTAMP
?
laravel 설정의 기본값
<code> $table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));</code>
초대해주셔서 감사합니다.
기본적으로 Eloquent는 데이터베이스 테이블의 created_at
및 update_at 필드를 자동으로 유지 관리합니다. 데이터베이스 테이블에 이 두 개의 "타임스탬프" 필드를 추가하기만 하면 Eloquent가 나머지를 처리합니다. Eloquent가 이러한 필드를 자동으로 유지하는 것을 원하지 않으면 모델 클래스에 다음 속성을 추가하세요:
<code>// 关闭自动更新时间戳 class User extends Eloquent { protected $table = 'users'; public $timestamps = false; }</code>
모델을 사용하여 데이터베이스 작업을 전혀 수행하지 않으며 타임스탬프가 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
라라벨은 5.1 이상입니다
Laravel에서는 테이블 이름이 복수형일 것을 권장합니다. 테이블 이름은 equips
Laravel에는 기본 키가 필요하며 이름은 id로 지정하는 것이 좋습니다.
새 모델 파일이 필요합니다
<code>app/Equip.php</code>
이 클래스는 자동으로 equips
테이블
<code>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'; }</code>
작전
<code>$e = Equip::create([ 'eqiup_name' => 'wwww', 'eqiup_desc' => 'xxxx', ]); $e->update([ 'eqiup_name' => 'yyyy', ]);</code>
이렇게 해도 라라벨은 아직 자동으로 유지관리를 해주지 않습니다created_at
updated_at
이제 머리를 여러분이 앉을 의자로 사용하겠습니다. 2년 이상. 타임스탬프를 끄지 않는 것은 불가능합니다.