2018/11/20更新

[Laravel] SoftDeleteで、deleted_at以外のカラム名を使う

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
Laravelの論理削除(SoftDelete)で、削除を表現するカラムをdeleted_at以外にする方法を、ブログに書きたいと思います。



なぜ必要か

Laravelで論理削除(SoftDelete)を行うことができますが、デフォルトではカラム名はdeleted_atと決まっています。しかし例えば、Cake3で構築したデータベースを使い、サーバーはLaravelに作り変える場合などには、論理削除のカラム名が違う(deletedなど)ことがあります。

そのような場合に、どうやってdeleted_at以外のカラム名を指定するのかについて調べて実装したので、ブログにも残したい次第です。



論理削除で使うカラム名に任意の名前をつける

論理削除用のカラムを指定するためには、DELETED_ATという変数名を利用します。
例えばUserモデルであれば、以下のように実装します。
// User Model.
<?php

namespace App;

use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{

    // 論理削除をON.
    use SoftDeletes;

    // 論理削除に使うカラム名を指定(ここでは「deleted」)
    const DELETED_AT = 'deleted';

    // 日付として扱うカラムを定義(ここに論理削除に使うカラムも指定する)
    protected $dates = ['deleted'];
}
これで、deletedカラムを論理削除に使うことができます。



もっと詳しく

上記のDELETED_AT変数は、SoftDeletesトレイトで利用されています。具体的には以下の箇所です。
https://github.com/illuminate/database/blob/2faaf98f91573a67489987066d3a1a30b057ab05/Eloquent/SoftDeletes.php#L157-L160

Laravelのコードを読むと、色々と勉強になります。



最後に

今回のお話はドキュメントには見当たらずでした。Laravelのコードを眺める機会が増えてきた気がします。ライブラリの中を読んでいくと学べることが多くて楽しいなと感じています。

最後になりますが本ブログでは、PHP、Python、サーバー、フロントエンド、インフラ、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。