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' ), .. |