Saba note

醜悪コード Ugly hacks ITものづくり

Laravel5 モデルとマイグレーション(2)

マイグレーションの設定でも結構便利なものがあります。

softDeletes()

$table->softDeletes();

いわゆるdelete flag的な仕事をやってくれます。この設定はselectの際に特にwhere文で条件設定をしてなくても理論削除の有無を判断してくれる便利さ。
softDeletes()でテーブルカラムを作成するとカラム名はdelete_atになります。フラグが立つのではなく削除した日時が追加されます。

use Illuminate\Database\Eloquent\SoftDeletes;

をモデルに追加して使用します。
通常のdelete, destroyでdeleted_atに削除時間がセットされます。
モデルでの検索時に論理削除したデータは結果に含まれないです。
softDeletes()されたレコードは、$modelname->trashed()で確認できます。

Laravel 5.1 入門記 その12 (Eloquent 論理削除編)

SoftDeletes()をまとめて設定しておきたいときはmodelファイルに書いてしまった方が早い。

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Modeltest extends Model
{
    use SoftDeletes;

    /**
     * The attributes that should be mutated to dates.
     *
     * @var array
     */
    protected $dates = ['deleted_at'];
}

実際につかってみる

$Modeltest =  Modeltest::where('id', 10)->delete();

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です