Laravel 5.3に更新して、Eloquentのモデルの設定において嬉しいこと発見しました。
LaravelのEloquentでは、指定のDBテーブルにおいて、作成日時と編集日時に、規定のcreated_at
とupdated_at
の項目名が使用されているなら、いちいち、
use Users; use Carbon\Carbon; $user = new Users; ... $user->created_at = $user->updated_at = Carbon::now(); $user->save();
というようなことを、DBレコードの追加や編集の際に、書かなくとも自動で作成日時と編集日時に値を入れてくれます。
私のケースでは、既存のプロジェクトのDBにおいて、作成日時と編集日時には、date_created
、date_modified
と違う名前を使用していて、今まで「いちいち」コードで指定していました。
しかし、Laravel 5.3では、以下のようにモデルの定数(const)を指定することで、項目名を指定できるようになりました。
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Company extends Model { protected $table = 'company'; protected $primaryKey = 'company_id'; public $timestamps = true; //デフォルトではtrueなので、指定する必要はない const CREATED_AT = 'date_created'; const UPDATED_AT = 'date_modified'; ..
これは大変便利です。
もう1つ便利なことで最近見つけたことは、最初の例で使用したCarbon
は、Laravelをインストールしたら一緒にインストールされるパッケージですが、使い勝手あります。
例えば、DBに記録した日時から現在までの「経過日数」を計算するには、
$days_past = (new Carbon($user->updated_at))->diff(Carbon::now())->days;
簡単でわかりやすいですね。これをphpでやろうとすると、文字列から秒数に変換してなどと大変です。
最後に、日時の使用で忘れてならないのは、必ずアプリの設定ファイルで、タイムゾーンを設定すること。
.. 'timezone' => env('APP_TIMEZONE', 'Asia/Tokyo'), ..メルマガ購読の申し込みはこちらから。