Laravel は、Web アプリケーションの開発で広く使用されている人気のある PHP 開発フレームワークです。 ORM、ルーティング制御、テンプレートエンジンなどの便利な機能を多数備えており、Webアプリケーション開発を簡単かつ楽しく行えます。その中でも、Laravelのソフトデリート機能は最も人気のある機能の1つです。この記事では、Laravelアップデート後のソフトデリートの変更点とその解決策を紹介します。
Laravel のソフト削除機能
Laravel では、レコードを削除したい場合、delete
メソッドまたは destroy
メソッドを使用できます。ただし、レコードを完全に削除するのではなく、削除済みとしてマークしたい場合は、Laravel の論理的な削除機能を使用する必要があります。
論理的な削除機能を使用するには、SoftDeletes
特性をモデルに追加し、deleted_at
という名前の datetime
タイプをモデルに追加する必要があります。列のデータベース。 delete
または destroy
メソッドを使用してデータベースからレコードが削除されると、レコードは削除済みとしてマークされ、 deleted_at
フィールドは現在のタイムスタンプに設定されます。削除済みとしてマークされたレコードはクエリでは返されませんが、データベースにはまだ存在します。
delete
および destroy
メソッドに加えて、Laravel は、forceDelete
や restore など、他の多くのソフト削除メソッドも提供します。
。 forceDelete
メソッドは論理的に削除されたレコードを完全に削除でき、restore
メソッドは論理的に削除されたレコードをデータベースに復元できます。
Laravel アップデート後のソフトデリートの変更点
Laravel 7 が Laravel 8 にアップデートされた際に、ソフトデリート機能にいくつかの変更が発生しました。 Laravel 8では、論理的な削除動作のデフォルト値が「keep」から「remove」に変更されました。
つまり、Laravel 8 では、delete
または destroy
メソッドを呼び出すと、レコードは以前のバージョンのように削除されるのではなく、完全に削除されます。削除済みとしてマークされています。これにより、削除されたレコードを回復できなくなり、アプリケーションが論理的な削除機能に依存している場合は、予期しないエラーが発生する可能性があります。
回避策
アプリケーションが論理的な削除機能に依存している場合は、論理的な削除機能が期待どおりに動作するように、Laravel 8 で追加の手順を実行する必要があります。
まず、モデル内で論理的な削除の動作を明示的に定義する必要があります。モデルでは、booted
メソッドを定義し、static::deleted
メソッドを呼び出して、モデルのソフト削除動作を次のように定義する必要があります。
use IlluminateDatabaseEloquentSoftDeletes; class MyModel extends Model { use SoftDeletes; protected static function booted() { static::deleted(function ($model) { // Handle soft deletion }); } }
上記ではたとえば、deleted
メソッドを使用して、モデルの論理的な削除動作を定義します。モデルが論理的に削除されると、deleted
メソッドに渡されたクロージャー関数が呼び出されます。
この関数では、論理的な削除時に実行したい任意のコードを記述することができます。たとえば、論理的に削除されたレコードを作成する場合、モデルに追加のプロパティを設定したり、サードパーティ サービスの他のアプリケーションに通知したりできます。
2 番目に、論理的な削除を使用するアプリケーション内のすべての場所が正しく調整されていることを確認する必要があります。たとえば、コード内で deleted_at
フィールドを使用してクエリを実行する場合は、コードがそのフィールドの値を正しく処理していることを確認してください。
最後に、以前に delete
または destroy
メソッドを使用していて、引き続き論理的な削除機能を使用したい場合は、softDelete を使用するようにコードを変更してください。
または softDeletes
メソッドを使用し、以下に示すように SoftDeletes
トレイトを参照します。
class MyController extends Controller { public function delete($id) { $record = MyModel::find($id); $record->softDelete(); // 使用 softDelete 方法 // ... } }
上記の例では、softDelete
Method を使用して、レコードをソフト削除します。複数のレコードを削除する場合は、softDeletes
メソッドを使用します。
結論
Laravelではソフトデリートは非常に便利な機能ですが、Laravel 8では動作が変更されました。論理的な削除機能が期待どおりに動作することを確認するには、モデルで論理的な削除の動作を明示的に定義し、論理的な削除が使用されるアプリケーションで適切な調整を行う必要があります。
Laravel バージョンを更新する前に、十分な準備ができていることを確認し、更新後も論理的な削除機能が期待どおりに動作するかどうかを確認してください。
以上がlaravelは更新後にソフト削除されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Laravelは、次のようなWeb開発プロセスを最適化します。1。ルーティングシステムを使用してURL構造を管理します。 2。ブレードテンプレートエンジンを使用して、ビュー開発を簡素化します。 3.キューを介して時間のかかるタスクを処理します。 4. Eloquentormを使用して、データベース操作を簡素化します。 5.ベストプラクティスに従って、コードの品質と保守性を向上させます。

Laravelは、強力なツールセットを提供し、開発プロセスを簡素化し、コードの保守性とスケーラビリティを向上させる最新のPHPフレームワークです。 1)Eloquentormはデータベース操作を簡素化します。 2)ブレードテンプレートエンジンは、フロントエンド開発を直感的にします。 3)職人のコマンドラインツールは、開発効率を向上させます。 4)パフォーマンスの最適化には、MVCアーキテクチャ、キューの処理、および書き込みテストケースの使用、キャッシュメカニズムの使用、キャッシュメカニズムの使用が含まれます。

LaravelのMVCアーキテクチャは、データロジック、プレゼンテーション、ビジネス処理の分離のためのモデル、ビュー、およびコントローラーを介して、コードの構造と保守性を向上させます。 1)モデルはデータを処理します。2)ビューは表示の責任があります。3)コントローラーはユーザー入力とビジネスロジックを処理します。このアーキテクチャにより、開発者はビジネスロジックに集中し、コードの泥沼に陥ることを避けることができます。

Laravelは、MVCアーキテクチャに基づいたPHPフレームワークで、簡潔な構文、強力なコマンドラインツール、便利なデータ操作、柔軟なテンプレートエンジンを備えています。 1.エレガントな構文と使いやすいAPIにより、開発が迅速かつ使いやすくなります。 2。職人コマンドラインツールは、コード生成とデータベース管理を簡素化します。 3.Eloquentormは、データ操作を直感的かつシンプルにします。 4.ブレードテンプレートエンジンは、高度なビューロジックをサポートしています。

Laravelは、エレガントな構文、豊富な機能、強力なコミュニティサポートを提供するため、バックエンドサービスの構築に適しています。 1)LaravelはMVCアーキテクチャに基づいており、開発プロセスを簡素化します。 2)Eloquentormが含まれ、データベース操作を最適化します。 3)Laravel's Ecosystemは、開発効率を向上させるために、職人、ブレード、ルーティングシステムなどのツールを提供します。

継続的な技術の進歩のこの時代において、現代のプログラマーにとって高度なフレームワークをマスターすることが重要です。この記事では、Laravelフレームワークであまり知られていないテクニックを共有することで、開発スキルを向上させるのに役立ちます。エレガントな構文と幅広い機能で知られるこの記事では、その強力な機能を掘り下げ、効率的で保守可能なWebアプリケーションを作成するための実用的なヒントとコツを提供します。

LaravelとThinkPhpはどちらも人気のあるPHPフレームワークであり、開発における独自の利点と短所を持っています。この記事では、2つの深さを比較し、アーキテクチャ、機能、パフォーマンスの違いを強調して、開発者が特定のプロジェクトのニーズに基づいて情報に基づいた選択を行うのに役立ちます。

Laravelのユーザーログイン機能の構築は重要なタスクであり、この記事では、ユーザー登録からログイン検証までのすべての重要なステップをカバーする包括的な概要を提供します。 Laravelの組み込み検証機能の力に飛び込み、特定のニーズに合わせてログインプロセスをカスタマイズして拡張することをガイドします。これらのステップバイステップの手順に従うことにより、Laravelアプリケーションのユーザーにシームレスなアクセスエクスペリエンスを提供する安全で信頼性の高いログインシステムを作成できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
