Laravelで論理削除されたデータを取得する方法についてまとめます。
実務において、論理削除されたレコードも含めてデータを取得する機会があったので、以下の3パターンの方法についてご紹介します。
- 論理削除されたレコードのみ取得
- 論理削除されたレコードを含めて取得
- 論理削除されたレコードの復元
前提となるデータ
こちらのテーブルからデータを取得していきます。
sponsor table
id | name | created_at | updated_at | deleted_at |
1 | first | 2022-01-01 00:00:00 | 2022-01-01 00:00:00 | |
2 | second | 2022-01-01 00:00:00 | 2022-01-01 00:00:00 | |
3 | third | 2022-01-01 00:00:00 | 2022-01-02 00:00:00 | 2022-01-02 00:00:00 |
論理削除されたレコードのみ取得
下記のメソッドを利用することで、論理削除されたレコードのみ取得することができます。
Sponsor::onlyTrashed()->get();
array(1) {
[0] =>
array(5) {
'id' => 3
'name' => "third"
'created_at' => "2022-01-01 00:00:00"
'updated_at' => "2022-01-02 00:00:00"
'deleted_at' => "2022-01-02 00:00:00"
}
}
論理削除されたレコードを含めて取得
下記のメソッドで論理削除されているレコードを含めて取得することができます。
Sponsor::withTrashed()->get();
array(3) {
[0] =>
array(5) {
'id' => 1
'name' => "first"
'created_at' => "2022-01-01 00:00:00"
'updated_at' => "2022-01-01 00:00:00"
'deleted_at' => NULL
}
[1] =>
array(5) {
'id' => 2
'name' => "second"
'created_at' => "2022-01-01 00:00:00"
'updated_at' => "2022-01-01 00:00:00"
'deleted_at' => NULL
}
[2] =>
array(5) {
'id' => 3
'name' => "third"
'created_at' => "2022-01-01 00:00:00"
'updated_at' => "2022-01-02 00:00:00"
'deleted_at' => "2022-01-02 00:00:00"
}
}
論理削除されたレコードの復元
idを指定することによって、レコードを復元することができます。
以下のコードにより、sponsorテーブルのdeleted_atの内容が空になります。
Sponsor::onlyTrashed()->whereId(2)->restore();
コメント