2015-02-13 13 views
52

Tôi đã triển khai ZendSearch vào ứng dụng Laravel của mình. Tôi đang sử dụng nó làm công cụ tìm kiếm của mình nơi người dùng sẽ nhập một từ tìm kiếm và sau đó ZendSearch sẽ trả lại cho tôi một loạt kết quả được sắp xếp theo mức độ liên quan. Tuy nhiên, mảng mà ZendSearch trả lại, chỉ trả về ID hồ sơ của tôi (nó không trả về bất kỳ thông tin kỷ lục thực tế nào).Truy xuất kết quả Mô hình Laravel dựa trên nhiều ID của

Tiếp theo sẽ là cách chính xác để truy vấn Mô hình của tôi để truy xuất kết quả dựa trên kết quả mảng ZendSearch chỉ là một mảng thứ tự ID dựa trên mức độ liên quan.

Tôi biết số Model::find(1) sẽ trả lại hồ sơ của tôi bằng ID 1, nhưng làm cách nào tôi có thể nạp phương thức find() một mảng ID mà tôi muốn được trả về theo thứ tự tôi đang cung cấp.

+0

Chăm sóc để bình luận tại sao downvote? – justinl

+1

Một downvote khác? Tại sao? :) Các tài liệu laravel thậm chí không nói bất cứ điều gì về findMany() hoặc khả năng truyền một mảng tới hàm find. Làm thế nào đây không phải là một câu hỏi hợp pháp? :) – justinl

+4

Bỏ phiếu cho bạn, câu hỏi này đã giúp tôi. :) Tôi cũng không thấy 'findMany' trong tài liệu, và nó nằm trong [tài liệu API] (http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Builder.html#method_findMany). –

Trả lời

106

Thật đơn giản. Sử dụng findMany:

$models = Model::findMany([1, 2, 3]); 

Bằng cách này, bạn cũng có thể vượt qua một mảng để find() và nó sẽ nội bộ gọi findMany:

$models = Model::find([1, 2, 3]); 

Dưới mui xe nó chỉ làm một whereIn vì vậy bạn có thể cũng làm như vậy:

$models = Model::whereIn('id', [1, 2, 3])->get(); 
+2

Hoàn hảo! Cảm ơn. Tôi không thấy điều này được đề cập trong tài liệu Laravel. – justinl

+1

Bạn được chào đón. Có, thật không may nó không được liệt kê trong tài liệu. – lukasgeiter

0

********* SLOVED **** ******

Có nhiều cách để làm điều Way

này 1:

Model::whereIn('id',[1,2,3]); 

Way 2:

Model::findMany('id',[1,2,3]); 

Way 3:

Model::find([1,2,3]); 
Các vấn đề liên quan