為什麼我設定了某個欄位類型為timestamps,但是他並沒有像我預期的一樣在更新或新增的時候自動填入當前時間戳記?
還有我用Laravel的migrate產生的資料表也一樣,產生的表裡面那個timestamps欄位根本不起效果。是怎麼回事?
這是migration檔
<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>
為什麼我設定了某個欄位類型為timestamps,但是他並沒有像我預期的一樣在更新或新增的時候自動填入當前時間戳記?
還有我用Laravel的migrate產生的資料表也一樣,產生的表裡面那個timestamps欄位根本不起效果。是怎麼回事?
這是migration檔
<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>
你設定timestamp 欄位 ON UPDATE CURRENT_TIMESTAMP
了嗎
laravel設定下預設值
<code> $table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));</code>
謝邀。
預設 Eloquent 會自動維護資料庫表的 created_at
和 updated_at 欄位。只要把這兩個「時間戳記」欄位加到資料庫表, Eloquent 就會處理剩下的工作。如果不想讓 Eloquent 自動維護這些字段,把下面的屬性加到模型類別裡:
<code>// 关闭自动更新时间戳 class User extends Eloquent { protected $table = 'users'; public $timestamps = false; }</code>
你根本就沒用Model來做資料庫的操作,和timestamps是否是CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
的設定無關
Laravel 是 5.1+
Laravel是建議表名是複數的,你的表名應該是equips
Laravel要求主鍵,並且名字建議為id,你的主鍵換名字了
要new 一個Model檔
<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>
你如果是這麼弄的,Laravel仍然沒有自動維護created_at
updated_at
我把頭給你當凳子坐,畢竟我用Laravel都2年多了,不關閉timestamps,是不可能出現你的情況的