Làm cách nào để tìm kiếm theo tên trong laravel?

Ở đây chúng ta sẽ xem cách triển khai chức năng tìm kiếm trong Laravel. chúng tôi sẽ tìm kiếm dữ liệu từ cơ sở dữ liệu và hiển thị kết quả tìm kiếm trong một bảng

Chức năng tìm kiếm trong laravel — jusLaravel. comMẫu tìm kiếm

Đầu tiên, hãy tạo một biểu mẫu cho trường tìm kiếm,


{{ csrf_field[] }}







Hành động tìm kiếm

Khi nhấp vào nút tìm kiếm, nó sẽ chuyển đến tìm kiếm tuyến đường nơi có logic để tìm nạp dữ liệu từ cơ sở dữ liệu,

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];

logic này tìm kiếm tên và email trong bảng Người dùng với dữ liệu đầu vào chúng tôi cung cấp, ở đây chúng tôi sử dụng toán tử LIKE để tìm kiếm dữ liệu,
sau khi tìm nạp dữ liệu, dữ liệu được gửi đến chế độ xem chào mừng .

Ở đây tất cả logic được viết trong chính file route, nếu muốn tạo controller thì cũng được, ở đây chỉ có 1 logic đơn giản thôi nên không dùng controller

Laravel Scout cung cấp một giải pháp dựa trên trình điều khiển đơn giản để thêm tìm kiếm toàn văn vào các mô hình Eloquent của bạn. Sử dụng bộ quan sát mô hình, Scout sẽ tự động giữ cho các chỉ mục tìm kiếm của bạn đồng bộ với các bản ghi Eloquent của bạn

Hiện tại, Scout có trình điều khiển Algolia, MeiliSearch và MySQL / PostgreSQL [

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

2]. Ngoài ra, Scout bao gồm trình điều khiển "bộ sưu tập" được thiết kế để sử dụng phát triển cục bộ và không yêu cầu bất kỳ phụ thuộc bên ngoài hoặc dịch vụ của bên thứ ba nào. Hơn nữa, việc viết các trình điều khiển tùy chỉnh rất đơn giản và bạn có thể tự do mở rộng Scout với các triển khai tìm kiếm của riêng mình

Cài đặt

Đầu tiên, cài đặt Scout thông qua trình quản lý gói Composer

composer require laravel/scout

Sau khi cài đặt Scout, bạn nên xuất bản tệp cấu hình Scout bằng lệnh Artisan

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

3. Lệnh này sẽ xuất bản tệp cấu hình

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

4 vào thư mục

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

5 của ứng dụng của bạn

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Cuối cùng, thêm đặc điểm

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

6 vào mô hình mà bạn muốn làm cho có thể tìm kiếm được. Đặc điểm này sẽ đăng ký một trình quan sát mô hình sẽ tự động giữ cho mô hình đồng bộ hóa với trình điều khiển tìm kiếm của bạn

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

Điều kiện tiên quyết của trình điều khiển

Algolia

Khi sử dụng trình điều khiển Algolia, bạn nên định cấu hình thông tin đăng nhập Algolia

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

7 và

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

8 trong tệp cấu hình

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

9 của mình. Khi thông tin đăng nhập của bạn đã được định cấu hình, bạn cũng sẽ cần cài đặt Algolia PHP SDK thông qua trình quản lý gói Composer

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
3

MeiliSearch

MeiliSearch là một công cụ tìm kiếm mã nguồn mở và cực nhanh. Nếu bạn không chắc chắn cách cài đặt MeiliSearch trên máy cục bộ của mình, bạn có thể sử dụng môi trường phát triển Docker được hỗ trợ chính thức của Laravel

Khi sử dụng trình điều khiển MeiliSearch, bạn sẽ cần cài đặt MeiliSearch PHP SDK thông qua trình quản lý gói Composer

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

Sau đó, đặt biến môi trường

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
50 cũng như thông tin xác thực MeiliSearch
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
51 và
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
52 của bạn trong tệp
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
53 của ứng dụng của bạn

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
5

Để biết thêm thông tin về MeiliSearch, vui lòng tham khảo tài liệu về MeiliSearch

Ngoài ra, bạn nên đảm bảo rằng bạn đã cài đặt phiên bản

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
54 tương thích với phiên bản nhị phân MeiliSearch của mình bằng cách xem lại

Cảnh báo
Khi nâng cấp Scout trên ứng dụng sử dụng MeiliSearch, bạn phải luôn xem xét mọi thay đổi vi phạm bổ sung đối với chính dịch vụ MeiliSearch.

Xếp hàng

Mặc dù không bắt buộc phải sử dụng Scout, bạn nên xem xét kỹ việc định cấu hình trình điều khiển hàng đợi trước khi sử dụng thư viện. Chạy queue worker sẽ cho phép Scout xếp hàng tất cả các hoạt động đồng bộ hóa thông tin mô hình của bạn với các chỉ mục tìm kiếm, mang lại thời gian phản hồi tốt hơn nhiều cho giao diện web của ứng dụng của bạn

Khi bạn đã định cấu hình trình điều khiển hàng đợi, hãy đặt giá trị của tùy chọn

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
55 trong tệp cấu hình

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

9 của bạn thành
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
57

Ngay cả khi tùy chọn

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
55 được đặt thành
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
59, điều quan trọng cần nhớ là một số trình điều khiển Scout như Algolia và Meilisearch luôn lập chỉ mục các bản ghi không đồng bộ. Có nghĩa là, mặc dù hoạt động lập chỉ mục đã hoàn thành trong ứng dụng Laravel của bạn, nhưng bản thân công cụ tìm kiếm có thể không phản ánh các bản ghi mới và cập nhật ngay lập tức

Để chỉ định kết nối và hàng đợi mà công việc Hướng đạo của bạn sử dụng, bạn có thể xác định tùy chọn cấu hình

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
55 dưới dạng một mảng

Cấu hình

Định cấu hình chỉ mục mô hình

Mỗi mô hình Eloquent được đồng bộ hóa với một "chỉ mục" tìm kiếm nhất định, chứa tất cả các bản ghi có thể tìm kiếm cho mô hình đó. Nói cách khác, bạn có thể coi mỗi chỉ mục giống như một bảng MySQL. Theo mặc định, mỗi mô hình sẽ được duy trì thành một chỉ mục khớp với tên "bảng" điển hình của mô hình. Thông thường, đây là dạng số nhiều của tên mô hình;

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

7

Định cấu hình dữ liệu có thể tìm kiếm

Theo mặc định, toàn bộ biểu mẫu

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

72 của một mô hình nhất định sẽ được duy trì trong chỉ mục tìm kiếm của mô hình đó. Nếu bạn muốn tùy chỉnh dữ liệu được đồng bộ hóa với chỉ mục tìm kiếm, bạn có thể ghi đè phương thức

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

73 trên mô hình

composer require laravel/scout

1

Một số công cụ tìm kiếm như MeiliSearch sẽ chỉ thực hiện các thao tác lọc [

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

74,

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

75, v.v. ] trên dữ liệu đúng loại. Vì vậy, khi sử dụng các công cụ tìm kiếm này và tùy chỉnh dữ liệu có thể tìm kiếm của mình, bạn nên đảm bảo rằng các giá trị số được truyền đúng loại của chúng

composer require laravel/scout

4

Định cấu hình cài đặt chỉ mục và dữ liệu có thể lọc [MeiliSearch]

Không giống như các trình điều khiển khác của Scout, MeiliSearch yêu cầu bạn xác định trước cài đặt tìm kiếm chỉ mục, chẳng hạn như thuộc tính có thể lọc, thuộc tính có thể sắp xếp và các trường cài đặt được hỗ trợ khác

Thuộc tính có thể lọc là bất kỳ thuộc tính nào bạn định lọc khi gọi phương thức

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

76 của Scout, trong khi thuộc tính có thể sắp xếp là bất kỳ thuộc tính nào bạn định sắp xếp khi gọi phương thức

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

77 của Scout. Để xác định cài đặt chỉ mục của bạn, hãy điều chỉnh phần

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

78 của mục nhập cấu hình

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

79 trong tệp cấu hình

composer require laravel/scout

10 của ứng dụng của bạn

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

0

Nếu mô hình bên dưới một chỉ mục nhất định có thể xóa mềm và được bao gồm trong mảng

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

78, Scout sẽ tự động bao gồm hỗ trợ lọc trên các mô hình đã xóa mềm trên chỉ mục đó. Nếu bạn không có thuộc tính có thể lọc hoặc có thể sắp xếp nào khác để xác định cho chỉ mục mô hình có thể xóa mềm, bạn có thể chỉ cần thêm một mục trống vào mảng

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

78 cho mô hình đó

Sau khi định cấu hình cài đặt chỉ mục cho ứng dụng của bạn, bạn phải gọi lệnh Artisan

composer require laravel/scout

13. Lệnh này sẽ thông báo cho MeiliSearch về cài đặt chỉ mục được định cấu hình hiện tại của bạn. Để thuận tiện, bạn có thể muốn biến lệnh này thành một phần trong quy trình triển khai của mình

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

0

Định cấu hình ID mẫu

Theo mặc định, Scout sẽ sử dụng khóa chính của mô hình làm ID/khóa duy nhất của mô hình được lưu trữ trong chỉ mục tìm kiếm. Nếu bạn cần tùy chỉnh hành vi này, bạn có thể ghi đè các phương thức

composer require laravel/scout

14 và

composer require laravel/scout

15 trên mô hình

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

1

Định cấu hình Công cụ Tìm kiếm Theo Mô hình

Khi tìm kiếm, Scout thường sẽ sử dụng công cụ tìm kiếm mặc định được chỉ định trong tệp cấu hình

composer require laravel/scout

10 của ứng dụng của bạn. Tuy nhiên, công cụ tìm kiếm cho một mô hình cụ thể có thể được thay đổi bằng cách ghi đè phương thức

composer require laravel/scout

17 trên mô hình

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

2

Xác định người dùng

Scout cũng cho phép bạn tự động xác định người dùng khi sử dụng Algolia. Việc liên kết người dùng được xác thực với các hoạt động tìm kiếm có thể hữu ích khi xem phân tích tìm kiếm của bạn trong bảng điều khiển của Algolia. Bạn có thể kích hoạt nhận dạng người dùng bằng cách xác định biến môi trường

composer require laravel/scout

18 là
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
57 trong tệp
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
53 của ứng dụng của bạn

Bật tính năng này, thao tác này cũng sẽ chuyển địa chỉ IP của yêu cầu và mã định danh chính của người dùng được xác thực của bạn tới Algolia để dữ liệu này được liên kết với bất kỳ yêu cầu tìm kiếm nào do người dùng thực hiện

Cơ sở dữ liệu / Công cụ thu thập

Cơ sở dữ liệu

Cảnh báo
Công cụ cơ sở dữ liệu hiện hỗ trợ MySQL và PostgreSQL.

Nếu ứng dụng của bạn tương tác với các cơ sở dữ liệu có kích thước vừa và nhỏ hoặc có khối lượng công việc nhẹ, bạn có thể thấy thuận tiện hơn khi bắt đầu với công cụ "cơ sở dữ liệu" của Scout. Công cụ cơ sở dữ liệu sẽ sử dụng mệnh đề "where like" và chỉ mục toàn văn khi lọc kết quả từ cơ sở dữ liệu hiện tại của bạn để xác định kết quả tìm kiếm phù hợp cho truy vấn của bạn

Để sử dụng công cụ cơ sở dữ liệu, bạn có thể chỉ cần đặt giá trị của biến môi trường

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
50 thành

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

2 hoặc chỉ định trình điều khiển

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

2 trực tiếp trong tệp cấu hình

composer require laravel/scout

10 của ứng dụng của bạn

Khi bạn đã chỉ định công cụ cơ sở dữ liệu làm trình điều khiển ưa thích của mình, bạn phải. Sau đó, bạn có thể bắt đầu chống lại các mô hình của mình. Lập chỉ mục công cụ tìm kiếm, chẳng hạn như lập chỉ mục cần thiết để tạo chỉ mục Algolia hoặc MeiliSearch, là không cần thiết khi sử dụng công cụ cơ sở dữ liệu

Tùy chỉnh chiến lược tìm kiếm cơ sở dữ liệu

Theo mặc định, công cụ cơ sở dữ liệu sẽ thực hiện truy vấn "where like" đối với mọi thuộc tính mô hình mà bạn có. Tuy nhiên, trong một số trường hợp, điều này có thể dẫn đến hiệu suất kém. Do đó, chiến lược tìm kiếm của công cụ cơ sở dữ liệu có thể được định cấu hình sao cho một số cột được chỉ định sử dụng các truy vấn tìm kiếm toàn văn hoặc chỉ sử dụng các ràng buộc "where like" để tìm kiếm các tiền tố của chuỗi [

composer require laravel/scout

45] thay vì tìm kiếm trong toàn bộ chuỗi [

composer require laravel/scout

46]

Để xác định hành vi này, bạn có thể gán các thuộc tính PHP cho phương thức

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

73 của mô hình của bạn. Bất kỳ cột nào không được chỉ định hành vi chiến lược tìm kiếm bổ sung sẽ tiếp tục sử dụng chiến lược "where like" mặc định

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

3

Cảnh báo
Trước khi chỉ định rằng một cột phải sử dụng các ràng buộc truy vấn toàn văn, hãy đảm bảo rằng cột đó đã được chỉ định một.

Công cụ thu thập

Mặc dù bạn có thể tự do sử dụng các công cụ tìm kiếm Algolia hoặc MeiliSearch trong quá trình phát triển cục bộ, nhưng bạn có thể thấy thuận tiện hơn khi bắt đầu với công cụ "bộ sưu tập". Công cụ thu thập sẽ sử dụng mệnh đề "where" và lọc bộ sưu tập trên các kết quả từ cơ sở dữ liệu hiện tại của bạn để xác định kết quả tìm kiếm phù hợp cho truy vấn của bạn. Khi sử dụng công cụ này, không cần thiết phải "lập chỉ mục" các mô hình có thể tìm kiếm của bạn, vì chúng sẽ được truy xuất đơn giản từ cơ sở dữ liệu cục bộ của bạn

Để sử dụng công cụ thu thập, bạn có thể chỉ cần đặt giá trị của biến môi trường

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
50 thành

composer require laravel/scout

49 hoặc chỉ định trình điều khiển

composer require laravel/scout

49 trực tiếp trong tệp cấu hình

composer require laravel/scout

10 của ứng dụng của bạn

Khi bạn đã chỉ định trình điều khiển bộ sưu tập làm trình điều khiển ưa thích của mình, bạn có thể bắt đầu với các mô hình của mình. Lập chỉ mục công cụ tìm kiếm, chẳng hạn như lập chỉ mục cần thiết để tạo chỉ mục Algolia hoặc MeiliSearch, là không cần thiết khi sử dụng công cụ thu thập

Sự khác biệt từ Công cụ cơ sở dữ liệu

Thoạt nhìn, công cụ "cơ sở dữ liệu" và "bộ sưu tập" khá giống nhau. Cả hai đều tương tác trực tiếp với cơ sở dữ liệu của bạn để truy xuất kết quả tìm kiếm. Tuy nhiên, công cụ thu thập không sử dụng các chỉ mục toàn văn hoặc mệnh đề

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

02 để tìm các bản ghi phù hợp. Thay vào đó, nó kéo tất cả các bản ghi có thể và sử dụng trình trợ giúp

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

03 của Laravel để xác định xem chuỗi tìm kiếm có tồn tại trong các giá trị thuộc tính mô hình hay không

Công cụ thu thập là công cụ tìm kiếm di động nhất vì nó hoạt động trên tất cả các cơ sở dữ liệu quan hệ được hỗ trợ bởi Laravel [bao gồm cả SQLite và SQL Server];

lập chỉ mục

Nhập hàng loạt

Nếu bạn đang cài đặt Scout vào một dự án hiện có, bạn có thể đã có các bản ghi cơ sở dữ liệu mà bạn cần nhập vào các chỉ mục của mình. Scout cung cấp lệnh

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

04 Artisan mà bạn có thể sử dụng để nhập tất cả các bản ghi hiện có vào các chỉ mục tìm kiếm của mình

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

4

Lệnh

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

05 có thể được sử dụng để xóa tất cả các bản ghi của mô hình khỏi chỉ mục tìm kiếm của bạn

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

5

Sửa đổi truy vấn nhập

Nếu bạn muốn sửa đổi truy vấn được sử dụng để truy xuất tất cả các mô hình của mình để nhập hàng loạt, bạn có thể xác định phương thức

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

06 trên mô hình của mình. Đây là một nơi tuyệt vời để thêm bất kỳ tải mối quan hệ mong muốn nào có thể cần thiết trước khi nhập mô hình của bạn

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

6

Thêm bản ghi

Khi bạn đã thêm đặc điểm

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

6 vào một mô hình, tất cả những gì bạn cần làm là

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

08 hoặc

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

09 một phiên bản mô hình và nó sẽ tự động được thêm vào chỉ mục tìm kiếm của bạn. Nếu bạn đã định cấu hình Hướng đạo thì thao tác này sẽ được nhân viên xếp hàng của bạn thực hiện ở chế độ nền

Thêm bản ghi qua truy vấn

Nếu bạn muốn thêm một tập hợp các mô hình vào chỉ mục tìm kiếm của mình thông qua truy vấn Eloquent, bạn có thể xâu chuỗi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 vào truy vấn Eloquent. Phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 sẽ truy vấn và thêm các bản ghi vào chỉ mục tìm kiếm của bạn. Một lần nữa, nếu bạn đã định cấu hình Scout để sử dụng hàng đợi, tất cả các khối sẽ được nhân viên xếp hàng của bạn nhập trong nền

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

7

Bạn cũng có thể gọi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 trên một Eloquent relationship instance

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

8

Hoặc, nếu bạn đã có một bộ sưu tập các mô hình Eloquent trong bộ nhớ, bạn có thể gọi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 trên cá thể bộ sưu tập để thêm các cá thể mô hình vào chỉ mục tương ứng của chúng

Lưu ý
Phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 có thể được coi là thao tác "nâng cao". Nói cách khác, nếu bản ghi mô hình đã có trong chỉ mục của bạn, nó sẽ được cập nhật. Nếu nó không tồn tại trong chỉ mục tìm kiếm, nó sẽ được thêm vào chỉ mục.

Cập nhật hồ sơ

Để cập nhật một mô hình có thể tìm kiếm, bạn chỉ cần cập nhật các thuộc tính của phiên bản mô hình và đưa mô hình vào cơ sở dữ liệu của bạn. Scout sẽ tự động duy trì các thay đổi đối với chỉ mục tìm kiếm của bạn

Bạn cũng có thể gọi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 trên một phiên bản truy vấn Eloquent để cập nhật bộ sưu tập các mô hình. Nếu các mô hình không tồn tại trong chỉ mục tìm kiếm của bạn, chúng sẽ được tạo

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

7

Nếu bạn muốn cập nhật các bản ghi chỉ mục tìm kiếm cho tất cả các mô hình trong một mối quan hệ, bạn có thể gọi

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 trên ví dụ về mối quan hệ

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

8

Hoặc, nếu bạn đã có một bộ sưu tập các mô hình Eloquent trong bộ nhớ, bạn có thể gọi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 trên cá thể bộ sưu tập để cập nhật các cá thể mô hình trong chỉ mục tương ứng của chúng

Xóa bản ghi

Để xóa một bản ghi khỏi chỉ mục của bạn, bạn có thể chỉ cần

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

09 mô hình khỏi cơ sở dữ liệu. Điều này có thể được thực hiện ngay cả khi bạn đang sử dụng các mô hình

Nếu bạn không muốn truy xuất mô hình trước khi xóa bản ghi, bạn có thể sử dụng phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

10 trên phiên bản truy vấn Eloquent

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

1

Nếu bạn muốn xóa các bản ghi chỉ mục tìm kiếm cho tất cả các mô hình trong một mối quan hệ, bạn có thể gọi

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

10 trên ví dụ về mối quan hệ

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

2

Hoặc, nếu bạn đã có một bộ sưu tập các mô hình Eloquent trong bộ nhớ, bạn có thể gọi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

10 trên cá thể bộ sưu tập để xóa các cá thể mô hình khỏi chỉ mục tương ứng của chúng

Tạm dừng lập chỉ mục

Đôi khi, bạn có thể cần thực hiện một loạt thao tác Eloquent trên một mô hình mà không đồng bộ hóa dữ liệu mô hình với chỉ mục tìm kiếm của bạn. Bạn có thể làm điều này bằng cách sử dụng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

13. Phương thức này chấp nhận một lần đóng sẽ được thực thi ngay lập tức. Mọi hoạt động của mô hình xảy ra trong quá trình đóng sẽ không được đồng bộ hóa với chỉ mục của mô hình

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

3

Phiên bản mô hình có thể tìm kiếm có điều kiện

Đôi khi, bạn có thể chỉ cần làm cho một mô hình có thể tìm kiếm được trong một số điều kiện nhất định. Ví dụ: hãy tưởng tượng bạn có mô hình

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

14 có thể ở một trong hai trạng thái. "dự thảo" và "xuất bản". Bạn có thể chỉ muốn cho phép các bài đăng "đã xuất bản" có thể tìm kiếm được. Để thực hiện điều này, bạn có thể xác định một phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

15 trên mô hình của mình

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

4

Phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

15 chỉ được áp dụng khi thao tác với các mô hình thông qua các phương thức, truy vấn hoặc mối quan hệ của

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

08 và

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

09. Trực tiếp làm cho các mô hình hoặc bộ sưu tập có thể tìm kiếm được bằng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

00 sẽ ghi đè kết quả của phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

15

Cảnh báo
Phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

15 không áp dụng được khi sử dụng công cụ "cơ sở dữ liệu" của Scout vì tất cả dữ liệu có thể tìm kiếm luôn được lưu trữ trong cơ sở dữ liệu. Để đạt được hành vi tương tự khi sử dụng công cụ cơ sở dữ liệu, thay vào đó, bạn nên sử dụng.

Đang tìm kiếm

Bạn có thể bắt đầu tìm kiếm một mô hình bằng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

22. Phương thức tìm kiếm chấp nhận một chuỗi duy nhất sẽ được sử dụng để tìm kiếm các mô hình của bạn. Sau đó, bạn nên xâu chuỗi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

23 vào truy vấn tìm kiếm để truy xuất các mô hình Eloquent phù hợp với truy vấn tìm kiếm đã cho

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

5

Vì các tìm kiếm Scout trả về một tập hợp các mô hình Eloquent, bạn thậm chí có thể trả lại kết quả trực tiếp từ một tuyến hoặc bộ điều khiển và chúng sẽ tự động được chuyển đổi thành JSON

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

6

Nếu bạn muốn nhận kết quả tìm kiếm thô trước khi chúng được chuyển đổi sang mô hình Eloquent, bạn có thể sử dụng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

24

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

7

Chỉ mục tùy chỉnh

Các truy vấn tìm kiếm thường sẽ được thực hiện trên chỉ mục được chỉ định bởi phương thức của mô hình. Tuy nhiên, bạn có thể sử dụng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

26 để chỉ định một chỉ mục tùy chỉnh sẽ được tìm kiếm thay thế

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

8

mệnh đề ở đâu

Scout cho phép bạn thêm mệnh đề "ở đâu" đơn giản vào truy vấn tìm kiếm của mình. Hiện tại, các mệnh đề này chỉ hỗ trợ kiểm tra tính bằng số cơ bản và chủ yếu hữu ích cho việc xác định phạm vi truy vấn tìm kiếm theo ID chủ sở hữu

use Illuminate\Database\Eloquent\Model;

use Laravel\Scout\Searchable;

9

Bạn có thể sử dụng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

27 để hạn chế kết quả đối với một tập hợp giá trị nhất định

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
30

Vì chỉ mục tìm kiếm không phải là cơ sở dữ liệu quan hệ nên các mệnh đề "where" nâng cao hơn hiện không được hỗ trợ

Cảnh báo Nếu ứng dụng của bạn đang sử dụng MeiliSearch, bạn phải định cấu hình ứng dụng của mình trước khi sử dụng mệnh đề "where" của Scout

phân trang

Ngoài việc truy xuất một bộ sưu tập các mô hình, bạn có thể phân trang kết quả tìm kiếm của mình bằng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

28. Phương thức này sẽ trả về một phiên bản

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

29 giống như khi bạn đã đánh số trang cho một truy vấn Eloquent truyền thống

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
31

Bạn có thể chỉ định số lượng mô hình cần truy xuất trên mỗi trang bằng cách chuyển số lượng làm đối số đầu tiên cho phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

28

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
32

Khi bạn đã truy xuất kết quả, bạn có thể hiển thị kết quả và hiển thị các liên kết trang bằng Blade giống như khi bạn đã phân trang một truy vấn Eloquent truyền thống

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
33

Tất nhiên, nếu bạn muốn truy xuất kết quả phân trang dưới dạng JSON, bạn có thể trả về phiên bản trình phân trang trực tiếp từ một tuyến đường hoặc bộ điều khiển

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
34

Cảnh báo
Vì các công cụ tìm kiếm không biết các định nghĩa phạm vi toàn cục của mô hình Eloquent của bạn, nên bạn không nên sử dụng phạm vi toàn cục trong các ứng dụng sử dụng phân trang Scout. Hoặc, bạn nên tạo lại các ràng buộc của phạm vi toàn cầu khi tìm kiếm qua Scout.

Xóa mềm

Nếu các mô hình được lập chỉ mục của bạn là và bạn cần tìm kiếm các mô hình đã xóa mềm của mình, hãy đặt tùy chọn

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

31 của tệp cấu hình

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

9 thành
Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
57

Khi tùy chọn cấu hình này là

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
57, Scout sẽ không xóa các mô hình đã xóa mềm khỏi chỉ mục tìm kiếm. Thay vào đó, nó sẽ đặt thuộc tính

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

35 ẩn trên bản ghi được lập chỉ mục. Sau đó, bạn có thể sử dụng các phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

36 hoặc

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

37 để truy xuất các bản ghi mềm đã bị xóa khi tìm kiếm

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
35

Lưu ý
Khi mô hình đã xóa mềm bị xóa vĩnh viễn bằng cách sử dụng

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

38, Scout sẽ tự động xóa mô hình đó khỏi chỉ mục tìm kiếm.

Tùy chỉnh Tìm kiếm Công cụ

Nếu bạn cần thực hiện tùy chỉnh nâng cao hành vi tìm kiếm của một công cụ, bạn có thể chuyển một bao đóng làm đối số thứ hai cho phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

22. Ví dụ: bạn có thể sử dụng lệnh gọi lại này để thêm dữ liệu vị trí địa lý vào tùy chọn tìm kiếm của mình trước khi truy vấn tìm kiếm được chuyển đến Algolia

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
36

Tùy chỉnh truy vấn kết quả Eloquent

Sau khi Scout truy xuất danh sách các mô hình Eloquent phù hợp từ công cụ tìm kiếm của ứng dụng của bạn, Eloquent được sử dụng để truy xuất tất cả các mô hình phù hợp bằng các khóa chính của chúng. Bạn có thể tùy chỉnh truy vấn này bằng cách gọi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

40. Phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

40 chấp nhận một bao đóng sẽ nhận phiên bản trình tạo truy vấn Eloquent làm đối số

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
37

Vì cuộc gọi lại này được gọi sau khi các mô hình có liên quan đã được truy xuất từ ​​công cụ tìm kiếm của ứng dụng của bạn, nên không nên sử dụng phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

40 để "lọc" kết quả. Thay vào đó, bạn nên sử dụng

Công cụ tùy chỉnh

Viết động cơ

Nếu một trong những công cụ tìm kiếm Scout tích hợp không phù hợp với nhu cầu của bạn, bạn có thể viết công cụ tùy chỉnh của riêng mình và đăng ký nó với Scout. Công cụ của bạn nên mở rộng lớp trừu tượng

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

43. Lớp trừu tượng này chứa tám phương thức mà công cụ tùy chỉnh của bạn phải triển khai

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
38

Bạn có thể thấy hữu ích khi xem lại việc triển khai các phương thức này trên lớp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

44. Lớp học này sẽ cung cấp cho bạn một điểm khởi đầu tốt để học cách triển khai từng phương thức này trong công cụ của riêng bạn

Đăng ký động cơ

Khi bạn đã viết công cụ tùy chỉnh của mình, bạn có thể đăng ký nó với Scout bằng phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

45 của trình quản lý công cụ Scout. Trình quản lý động cơ của Scout có thể được giải quyết từ vùng chứa dịch vụ của Laravel. Bạn nên gọi phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

45 từ phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

47 của lớp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

48 của bạn hoặc bất kỳ nhà cung cấp dịch vụ nào khác được ứng dụng của bạn sử dụng

Route::any['/search',function[]{
$q = Input::get [ 'q' ];
$user = User::where['name','LIKE','%'.$q.'%']->orWhere['email','LIKE','%'.$q.'%']->get[];
if[count[$user] > 0]
return view['welcome']->withDetails[$user]->withQuery [ $q ];
else return view ['welcome']->withMessage['No Details found. Try to search again !'];
}];
39

Sau khi động cơ của bạn đã được đăng ký, bạn có thể chỉ định nó làm Scout

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

49 mặc định trong tệp cấu hình

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

9 của ứng dụng của bạn

Macro trình tạo

Nếu bạn muốn định nghĩa một phương thức xây dựng tìm kiếm Scout tùy chỉnh, bạn có thể sử dụng phương thức

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

51 trên lớp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

52. Thông thường, "macro" phải được xác định trong phương pháp

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

47 của nhà cung cấp dịch vụ

composer require meilisearch/meilisearch-php http-interop/http-factory-guzzle

0

Hàm

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

51 chấp nhận tên macro làm đối số đầu tiên và đóng làm đối số thứ hai. Việc đóng macro sẽ được thực thi khi gọi tên macro từ triển khai

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

52

Làm cách nào để tìm kiếm theo tên trong laravel?

nếu bạn có quyền truy cập vào id của người dùng trong laravel, bạn có thể chạy Người dùng. find[$id], tuy nhiên, giả sử bạn không có quyền truy cập vào id của người dùng và chỉ có tên người dùng của họ. .
ấu trùng
jav

Làm cách nào để tìm kiếm họ và tên trong laravel?

$query->where[function [$q] use [$columns, $value] { foreach [$columns as $column] { $q->orWhere[$column, 'like', "%{$value}%"

Làm cách nào để sử dụng chức năng tìm kiếm trong laravel?

Hành động tìm kiếm. ']; . use LIKE operator for searching data, after fetching the data the data is sent to welcome view, along with the message when no search results are found.

Làm cách nào để sử dụng tìm kiếm trong Laravel 8?

Thêm thuộc tính giá trị và đặt nó thành khóa tìm kiếm trong nội dung yêu cầu. .

Chủ Đề