カラム名を変更したい場合
モデル内にCREATED_AT
, UPDATED_AT
定数を指定することで、
自動更新するカラムをカスタマイズすることができる
例えば・・original_created_at
をcreated_atとして、original_updated_at
をupdated_atとして扱いたい場合
- マイグレーション
$table->timestampTz('original_created_at')->nullable();
$table->timestampTz('original_updated_at')->nullable();
- Models/Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
const CREATED_AT = 'original_created_at';
const UPDATED_AT = 'original_updated_at';
}
これで、レコード登録時にはoriginal_created_atとoriginal_updated_atに現在時刻が、
レコード更新時にはoriginal_updated_atに現在時刻が挿入される
自動更新を無効にしたい場合
CREATED_AT
, UPDATED_AT
定数にNULLを指定すればOK
- Models/Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
const CREATED_AT = NULL;
const UPDATED_AT = NULL;
}
created_at, updated_at両方とも無効にしたい場合は下記の記法でもOK
- Models/Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public $timestamps = false;
}
Laravelではデフォルトではcreated_atカラムとupdated_atカラムが登録・更新時に自動更新される
それらをカスタマイズするときのメモ