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:
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.
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); });
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.
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; // ...
}
Selepas proses ini selesai, kaedah save(), delete(), restore() dan forceDelete() model akan disegerakkan secara automatik dengan enjin carian.
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;
use Searchable, Aggregator; public function toSearchableArray() { $array = $this->toArray(); // 请求注入时,我们需要更新查询升级和向量分配 $array = $this->seoInject Boosts($array, [ 'title' => 1000, 'content' => 100, 'body' => 10, ]); return $array; }
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.'); }
}
Dapatkan semua nota untuk dipadamkan.
/** * 删除多条笔记发生请求 * * @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.'); }
Atas ialah kandungan terperinci carian laravel padam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!