Rumah > rangka kerja php > Laravel > carian laravel padam

carian laravel padam

PHPz
Lepaskan: 2023-05-21 10:10:36
asal
517 orang telah melayarinya

Carian dan padam Laravel ialah keperluan pembangunan yang sangat biasa, terutamanya apabila membangunkan aplikasi seperti sistem pengurusan kandungan atau tapak web e-dagang yang memerlukan operasi CRUD pada data. Laravel, sebagai rangka kerja PHP yang popular, menyediakan pelbagai alatan dan API, menjadikan proses ini sangat mudah.

1. Carian Laravel

Melaksanakan fungsi carian dalam Laravel biasanya memerlukan langkah berikut:

  1. Pasang Laravel Scout

Laravel Scout Sesuai untuk aplikasi yang mengklasifikasikan dan mengoptimumkan hasil carian, Scout lebih pantas daripada pertanyaan carian asli dan komponen pertanyaan lebih mudah untuk dibina semula. Laravel Scout menggunakan Elasticsearch atau Algolia untuk melakukan carian, enjin carian ini sangat popular dan mempunyai sokongan komuniti yang meluas.

  1. Penghijrahan pangkalan data

Berdasarkan penubuhan fail migrasi Model, Pengawal dan pangkalan data dalam aplikasi Laravel, kami perlu melaksanakan operasi migrasi pangkalan data berkaitan carian.

Sebagai contoh, dalam pangkalan data pengguna kita boleh menambah lajur "boleh dicari":

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

Di sini kita boleh menetapkan nilai lalai palsu untuk dicari, iaitu, pengguna tidak mahu menjadi dicari. Ia juga boleh dikonfigurasikan untuk menetapkan boleh dicari kepada benar selepas mengedit maklumat pengguna, supaya pengguna boleh dicari.

  1. Gunakan Scout untuk menandakan model

Apabila menggunakan Laravel Scout, kita perlu menggunakan sifat Boleh Cari dalam Model yang sepadan.

Contohnya:

Apl namespace;

gunakan IlluminateDatabaseEloquentModel;
gunakan LaravelScoutSearchable;

class User extends Model
{

use Searchable;

// ...
Salin selepas log masuk

}

Selepas proses ini selesai, kaedah save(), delete(), restore() dan forceDelete() model akan disegerakkan secara automatik dengan enjin carian.

  1. Gunakan Algolia atau ElasticSearch

Buat indeks dan format hasil carian dalam Algolia atau ElasticSearch. Untuk mengoptimumkan hasil carian, kita boleh menggunakan sifat Boleh Dicari Pengakap dalam Laravel.

Contohnya, dalam Algolia:

Apl ruang nama;

gunakan LaravelScoutSearchable;
gunakan AlgoliaScoutExtendedSearchableAggregator;

<🎜<>Nota kelas memanjangkan Model>🎜

use Searchable, Aggregator;

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

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

    return $array;
}
Salin selepas log masuk

}

2. Cari dan padam Laravel

Dalam aplikasi CRUD Laravel, operasi pemadaman adalah sangat biasa. Pengalihan keluar daripada hasil carian adalah tugas yang agak rumit kerana anda perlu mengeluarkan data yang dipadam secara automatik daripada enjin carian. Ini bermakna kita perlu mengendalikan pangkalan data.

Berikut ialah proses umum untuk mencari dan memadam data:

1. Pilih data yang hendak dipadamkan dalam hasil carian.

2. Tandakan data ini sebagai "Padam", kemas kini pangkalan data dan padamkan data ini daripada enjin carian.

namespace AppHttpControllers;

gunakan AppNote;

gunakan IlluminateHttpRequest;


class NoteController extends 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.');
}
Salin selepas log masuk

}

Dalam contoh di atas, kami memadamkan nota daripada pangkalan data dan memadamkannya daripada enjin carian. Seterusnya, kami akan membincangkan cara melaksanakan pemadaman pukal dalam hasil carian.

3. Laksanakan operasi pemadaman kelompok

Sebelum memadamkan berbilang hasil, kita perlu membangunkan kotak berbilang pilih dan butang padam pada bahagian hadapan. Kemudian, kita perlu melaksanakan operasi memadam kelompok dalam pengawal. Bahagian kod ini termasuk:

Dapatkan semua nota untuk dipadamkan.

    Tandai nota ini sebagai "Padam" dalam pangkalan data.
  1. Alih keluar nota ini daripada enjin carian.
  2. Ubah hala ke laluan asal.
  3. Sebagai contoh, dalam fail NoteController.php, laksanakan operasi pemadaman kelompok:
  4. /**
     * 删除多条笔记发生请求
     *
     * @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.');
    }
    
    Salin selepas log masuk
    Dalam kod di atas, kami mengulangi semua objek nota yang akan dipadamkan dan memadamnya dalam pangkalan data dan Mereka ditandakan untuk pemadaman dalam enjin carian. Proses ini sangat serupa dengan pemadaman tunggal.

    4. Ringkasan

    Artikel ini memperkenalkan cara melaksanakan carian dan pemadaman dalam aplikasi Laravel, meliputi penggunaan asas rangka kerja Laravel dan modul Pengakap serta kaedah pemprosesan pengawal. Anda boleh menggunakan contoh ini untuk melaksanakan fungsi yang sama dalam aplikasi Laravel anda sendiri, menjadikan pembangunan anda lebih mudah.

    Atas ialah kandungan terperinci carian laravel padam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan