魔法使いの卵

WEBエンジニアの卵の成長記録

Laravel4 timestamps()の使い方がわかったw@改修ver

過去のエントリーにmigrationを使ってテストデータをぶっこむ

ってことを下記でやっていたけどtimestamps()の使い方がわかったから書いてみるw


Laravel4のsqliteでテーブルを作ってテストデータをぶっこんでみたったw - 魔法使いの卵

 

モデル

 前回作成したもの

public $timestamps = false;

でtimestamps()はつかわねーよ!ってことをモデルに記載したけど

今回はつかうからこれをコメントアウトする

//public $timestamps = false; 

次にSoftDeletesを使えるように宣言

use SoftDeletingTrait;

これをしないとdelete_atに日付がはいらへんでー!!

 

マイグレーション

 前回作成したものに下記の赤文字を追加する

public function up()
{
 Schema::create('users', function($table)
 {
  $table->increments('id');
  $table->string('email');
  $table->string('password');
  $table->string('name');
  $table->string('tel');
  $table->integer('zip');
  $table->integer('delete_flag');
  $table->timestamps();
  $table->softDeletes();
 });
}

public function down()
{
 Schema::drop('users');
}

 $table->timestamps();

  timestamps()はcreated_atとupdated_atのカラムを作成する

  ってことしてるねん。deleted_atはtimestamps()では作成されへんで!!

 

 $table->softDeletes(); 

  deleted_atを作成してるのはこいつ!!

  だから登録日更新日削除日のカラムを用意したい場合はこの2つを

  マイグレーションに書いてあげないとあかんねん。

 

seed

前回作成したものに下記の赤文字を追加

public function run()
{
  DB::table('users')->delete();

  User::create(array(
  'email' => 'user01@test.co.jp',
  'password' => 'user01',
  'name' => 'user01',
  'tel' => '09000000001',
  'zip' => '0',
  'delete_flag' => '0',
  'created_at'=>'2014-11-01',
  'updated_at'=>'2014-12-31',
  'deleted_at' =>'2015-11-12'
  ));

 User::create(array(
  'email' => 'user02@test.co.jp',
  'password' => 'user02',
  'name' => 'user02',
  'tel' => '09000000002',
  'zip' => '0',
  'delete_flag' => '0',
  'created_at'=>'2014-11-02',
  'updated_at'=>'2014-12-30',
  'deleted_at' =>'2015-11-12'
  ));

 User::create(array(
  'email' => 'user03@test.co.jp',
  'password' => 'user03',
  'name' => 'user03',
  'tel' => '09000000003',
  'zip' => '0',
  'delete_flag' => '0',
  'created_at' =>'2014-11-03',
  'update_at' =>'2014-12-29',
  'deleted_at' =>'2015-11-12'
  ));
}

'created_at' 、'update_at' 、'deleted_at' 

はLaravel4でtimestamps()を使い時にデフォルトで使われる命名っぽい。

なんでこれをseedで書いてあげたらテストデータがはいるでーってこと

 

sqlite3でカラムをみたらやっぱり上記の名前がカラム名になってたから

insert update delete select するときはこのカラム名を指定してあげるとええでー!!

 

感想:

冬休み中めっちゃマイグレーションハマりまくってたけど

勉強した成果があって割とスムーズにいけたかんじw

ようやく勉強した結果が少しずつ自分で実感できるようになってきた。

 

継続は力なり。

続けよう。

 

追記:

delete_atはnullが入っている。

削除処理が走った時に日付型のデータが入る。

な の で 、 設計次第でデータをどう持たせるのかが変わる。

大切なのはDBの設計に合わせるのかフレームワークがつかいやすいように

合わせるのかをちゃんと考えて実装していかないといけないってこと。 

 

設計について考えるきっかけになったw