Laravel検索削除

PHPz
PHPzオリジナル
2023-05-21 10:10:36542ブラウズ

Laravel の検索と削除は、特にデータに対する CRUD 操作が必要なコンテンツ管理システムや電子商取引 Web サイトなどのアプリケーションを開発する場合、非常に一般的な開発要件です。 Laravel は人気のある PHP フレームワークとして、豊富なツールと API を提供しており、このプロセスを非常にシンプルにしています。

1. Laravel Search

Laravel で検索機能を実装するには、通常、次の手順が必要です:

  1. Laravel Scout のインストール

Laravel Scout 検索結果を分類および最適化するアプリケーションに適した Scout は、ネイティブ検索クエリよりも高速で、クエリ コンポーネントの再構築が容易です。 Laravel Scout は Elasticsearch または Algolia を使用して検索を実行します。これらの検索エンジンは非常に人気があり、広範なコミュニティ サポートが提供されています。

  1. データベース移行

Laravel アプリケーションでのモデル、コントローラー、およびデータベース移行ファイルの確立に基づいて、検索関連のデータベース移行操作を実行する必要があります。

たとえば、ユーザー データベースに「検索可能」列を追加できます。

Schema::table('users', function (Blueprint $table) {
    $table->boolean('searchable')->default(false);
});

ここでは、検索可能にデフォルト値 false を設定できます。つまり、ユーザーが検索可能になることを希望しません。検索した。ユーザー情報の編集後に searchable を true に設定して、ユーザーを検索できるようにすることもできます。

  1. Scout を使用してモデルをマークする

Laravel Scout を使用する場合、対応するモデルで Searchable 特性を使用する必要があります。

例:

namespace App;

use IlluminateDatabaseEloquentModel;
use LaravelScoutSearchable;

class User extends Model
{

use Searchable;

// ...

}

このプロセスが完了すると、モデルの save()、delete()、restore()、forceDelete() メソッドが検索エンジンと自動的に同期します。

  1. Algolia または ElasticSearch の使用

Algolia または ElasticSearch でインデックスを作成し、検索結果をフォーマットします。検索結果を最適化するには、Laravel の Scout の Searchable 特性を使用します。

たとえば、Algolia の場合:

namespace App;

use LaravelScoutSearchable;
use AlgoliaScoutExtendedSearchableAggregator;

class Note extends Model
{

use Searchable, Aggregator;

public function toSearchableArray()
{
    $array = $this->toArray();

    // 请求注入时,我们需要更新查询升级和向量分配
    $array = $this->seoInject Boosts($array, [
        'title' => 1000, 
        'content' => 100,
        'body' => 10,
    ]);

    return $array;
}

}

2. Laravel の検索と削除

Laravel の CRUD アプリケーションでは、削除操作が非常に一般的です。検索結果からの削除は、削除されたデータを検索エンジンから自動的に削除する必要があるため、比較的複雑なタスクです。つまり、データベースを操作する必要があります。

データの検索と削除の一般的なプロセスは次のとおりです:

1. 検索結果で削除するデータを選択します。

2. このデータを「削除」としてマークし、データベースを更新して、このデータを検索エンジンから削除します。

名前空間 AppHttpControllers;

AppNote を使用;
IlluminateHttpRequest を使用;

クラス NoteController は Controller を拡張します
{

/**
 * 删除一条笔记修饰符信息请求
 *
 * @param int $id
 * @return IlluminateHttpResponse
 */
public function destroy($id)
{
    $note = Note::find($id);

    if ($note) {
        // 从数据库中删除
        $note->delete();

        // 从搜索引擎中删除
        $note->unsearchable();
    }

    return redirect()
        ->route('notes.index')
        ->with('success', 'Note deleted successfully.');
}

}

上記の例では、データベースからメモを削除し、検索エンジンからも削除しました。次に、検索結果の一括削除を実装する方法について説明します。

3. バッチ削除操作の実装

複数の結果を削除する前に、フロントエンドで複数選択ボックスと削除ボタンを開発する必要があります。次に、コントローラーにバッチ削除操作を実装する必要があります。コードのこの部分には次のものが含まれます:

  1. 削除するすべてのメモを取得します。
  2. これらのメモをデータベース内で「削除」としてマークします。
  3. これらのメモを検索エンジンから削除してください。
  4. 元のルートにリダイレクトします。

たとえば、NoteController.php ファイルで、バッチ削除操作を実装します。

/**
 * 删除多条笔记发生请求
 *
 * @param Request $request
 * @return IlluminateHttpResponse
 */
public function multiDestroy(Request $request)
{
    $notesId = $request->ids;

    foreach ($notesId as $noteId) {
        $note = Note::find($noteId);
        if ($note) {
            $note->delete();
            $note->unsearchable();
        }
    }

    return redirect()
        ->route('notes.index')
        ->with('success', 'Notes were deleted successfully.');
}

上記のコードでは、削除するすべてのメモ オブジェクトを走査し、それらを削除します。データベースと検索エンジンで削除対象としてマークされます。このプロセスは単一の削除と非常に似ています。

4. 概要

この記事では、Laravel フレームワークと Scout モジュールの基本的な使用法とコントローラーの処理方法をカバーし、Laravel アプリケーションで検索と削除を実装する方法を紹介します。この例を使用して同じ関数を独自の Laravel アプリケーションに実装すると、開発がより便利になります。

以上がLaravel検索削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。