ホームページ > PHPフレームワーク > Laravel > laravelのdeleteの書き方

laravelのdeleteの書き方

WBOY
リリース: 2023-05-26 13:46:07
オリジナル
1838 人が閲覧しました

Laravel は、強力な機能と使いやすさで開発者の間で人気のある PHP Web フレームワークです。実際の開発では、データベース内のデータを削除する必要があることがよくあります。この記事では、Laravelをよりよく理解して使用するために、Laravelでの削除の書き方を紹介します。

  1. 単一データを削除する

Laravel では単一データを削除するためのさまざまなメソッドが用意されています。以下にそれらを紹介します。

(1) モデルに付属の delete() メソッドを使用する

Laravel では、各モデルに、そのモデルに対応するデータベースを削除するために使用できる delete() メソッドが付属しています。 。 記録。以下は、使用方法のサンプル コードです。

$user = User::find(1);
$user->delete();
ログイン後にコピー
ログイン後にコピー

上記のコードでは、まず User モデルの find() メソッドを使用して ID 1 のレコードを検索し、次に delete() メソッドを呼び出します。レコードを削除するメソッド。

delete() メソッドは他のモデルがレコードに依存しているかどうかをチェックしないので、レコードを削除する前に他のモデルが他のデータに関連付けられていないことを確認する必要があることに注意してください。

(2) ORM の destroy() メソッドを使用する

ORM (オブジェクト リレーショナル マッピング) は、オブジェクトをリレーショナル データベース内のデータにマッピングするテクノロジです。 LaravelにはORM機能が組み込まれており、そのdestroy()メソッドを使用してモデルに対応するデータベースレコードを削除できます。

以下は、ORM の destroy() メソッドを使用して 1 つのレコードを削除するサンプル コードです。

User::destroy(1);
ログイン後にコピー

上記のコードでは、User モデルの destroy() メソッドを直接呼び出し、削除するレコードの ID を渡します。

destroy() メソッドは、他のモデルがレコードに依存しているかどうかをチェックしないことに注意してください。そのため、レコードを削除する前に、他のモデルが他のデータに関連付けられていないことを確認する必要があります。

(3) クエリビルダーの delete() メソッドを使用する

クエリビルダーは、チェーンコールに基づいた Laravel の SQL ステートメントビルダーです。データを削除するメソッド delete() など、データベースを操作するためのメソッドが豊富に用意されています。

以下は、クエリ ビルダーの delete() メソッドを使用して単一のレコードを削除するサンプル コードです。

DB::table('users')->where('id', 1)->delete();
ログイン後にコピー

上記のコードでは、DB (データベース) ファサードを使用してテーブル( ) メソッドを使用して削除するレコードを指定します。データ テーブル名、次に where() メソッドを使用して削除する条件を指定し、最後に delete() メソッドを呼び出して削除操作を実行します。

delete() メソッドはモデルのイベントとフックをトリガーしないことに注意してください。そのため、これらの関数を使用する場合は、上記のメソッドのいずれかを使用することをお勧めします。

  1. データをバッチで削除する

Laravel では、単一のデータベース レコードを削除するだけでなく、データをバッチで削除する便利な方法も提供しています。以下に、一般的に使用される 2 つの一括削除方法を紹介します。

(1) ORM の delete() メソッドを使用する

ORM の delete() メソッドは、単一のレコードを削除するだけでなく、複数のレコードを一括して削除することもできます。以下は、このメソッドを使用してレコードをバッチで削除するサンプル コードです。

User::where('age', '>', 18)->delete();
ログイン後にコピー

上記のコードでは、最初に where() メソッドを使用して 18 歳以上のユーザーを除外し、次にこれらのレコードを削除するには、delete() メソッドを使用します。

delete() メソッドはモデルのイベントとフックをトリガーしないことに注意してください。そのため、これらの関数を使用する場合は、上記のメソッドのいずれかを使用することをお勧めします。

(2) クエリ ビルダーの delete() メソッドを使用する

クエリ ビルダーの delete() メソッドを使用して、レコードをバッチで削除することもできます。このメソッドを使用してレコードを一括削除するサンプル コードを次に示します。

DB::table('users')->where('age', '>', 18)->delete();
ログイン後にコピー

上記のコードでは、where() メソッドを使用して削除する条件を指定し、delete() メソッドを使用します。削除操作を実行します。

delete() メソッドはモデルのイベントとフックをトリガーしないことに注意してください。そのため、これらの関数を使用する場合は、上記のメソッドのいずれかを使用することをお勧めします。

  1. ソフト削除

実際の開発では、後で復元できるように削除されたデータの記録を保持する必要がある場合があります。この時点で、論理的な削除が役に立ちます。 Laravel には、安全な方法でデータを削除するのに役立つ論理的な削除機能が組み込まれています。

論理的な削除の実装の中心となるアイデアは、deleted_at フィールドをデータベース テーブルに追加して、削除時間を記録することです。データをクエリするとき、Laravel は論理的に削除されたレコードを自動的にフィルターして、クエリ結果に表示されないようにします。

以下は、Laravel を使用してソフト削除を実装するサンプル コードです:

まず、モデルで SoftDeletes トレイトを使用する必要があります:

<?php

namespace App;

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentSoftDeletes;

class User extends Model
{
    use SoftDeletes;
}
ログイン後にコピー

次に、deleted_at を追加します。データベース移行のフィールド:

Schema::table('users', function (Blueprint $table) {
    $table->softDeletes();
});
ログイン後にコピー

最後に、コントローラーの delete() メソッドを使用してデータをソフト削除します:

$user = User::find(1);
$user->delete();
ログイン後にコピー
ログイン後にコピー

削除されたデータを回復する必要がある場合は、 restore() メソッド:

$user = User::withTrashed()->find(1);
$user->restore();
ログイン後にコピー

ソフト削除を使用すると、データを誤って削除することを心配することなく、削除されたデータをより適切に管理できます。ただし、論理的な削除は普遍的なソリューションではないことに注意してください。ビジネス シナリオによっては、データの整合性とセキュリティを確保するためにデータを完全に削除する必要がある場合があります。

要約

Laravel はデータを削除するための豊富な方法を提供しており、特定のビジネス ニーズに応じてさまざまな方法を選択できます。実際の開発では、データの整合性やセキュリティを確保するために、状況に応じてソフト削除や一括削除などの操作を使用するかを慎重に検討する必要があります。また、データを削除すると他の機種や機能の正常な動作に影響を与える可能性があり、十分なテストと検証が必要となりますのでご注意ください。

以上がlaravelのdeleteの書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート