既設のDBのテーブルを利用した場合、作成更新日時を記録するカラムとLaravelの標準なカラムと合わないことがあります。 LaravelのModeleに設定を加えupdate_atとcreate_atと異なるカラム名にも対応させます。
Model
MpdelではIlluminate\Database\Eloquent\Modelを継承している。
そこで、CREATED_AT
とUPDATED_AT
をオーバーライドすることで実現します。
created
とupdated
に対応させてみます。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
// テーブル名
protected $table = 't_user';
// プライマリーキー
protected $primaryKey = 'user_id';
// カラム名をオーバーライド
const CREATED_AT = 'created';
const UPDATED_AT = 'updated';
// 日付フォーマット
protected $dateFormat = 'Y-m-d H:i:s.u';
// 属性の保護
protected $guarded = ['user_id', 'created', 'updated'];
}
これで、作成更新日時がそれぞれ割り当てられました。 他のカラム名でも同様に変更できます。
$dateFormat
関連する設定として$dateFormat`に日付のフォーマットを指定しています。
$guarded
createメソッドで自動入力されるidと作成更新日時を操作しないよう保護することができます。
カラムに代入できないようにブラックリストとしての役割です。
(user_id
は自動インクリメントする前提)
反対に、$fillable`はホワイトリストとして働きます。 どちらか片方しか使用できません。
参考
laravel newコマンドでbash:laravel:command not found
Laravelschedule2020-10-05
LaravelのModelsのディレクトリ構成を変更する
Laravelschedule2020-09-02
【Laravel】UserAgentでガラケー用のViewを切り替えるためのmiddleware
Laravelschedule2020-04-21
PHP Warning Illegal string offset 'foo'
PHPschedule2020-02-03