ดึงผลลัพธ์ Laravel Model ตาม ID หลายตัว


110

ฉันได้นำZendSearchไปใช้ในLaravelแอปพลิเคชันของฉัน ฉันใช้มันเป็นเครื่องมือค้นหาของฉันที่ผู้ใช้จะพิมพ์คำค้นหาจากนั้นZendSearchจะส่งผลลัพธ์กลับมาให้ฉันเรียงลำดับตามความเกี่ยวข้อง อย่างไรก็ตามอาร์เรย์ที่ZendSearchส่งคืนจะส่งคืนเฉพาะ ID เร็กคอร์ดของฉันเท่านั้น (ไม่ส่งคืนข้อมูลบันทึกจริงใด ๆ )

ต่อไปจะเป็นวิธีที่ถูกต้องในการสืบค้น Model ของฉันเพื่อดึงผลลัพธ์ตามZendSearchผลลัพธ์อาร์เรย์ซึ่งเป็นเพียงอาร์เรย์ของ ID ที่เรียงตามความเกี่ยวข้อง

ฉันรู้ว่าModel::find(1)จะส่งคืนระเบียนของฉันด้วย ID เป็น 1 แต่ฉันจะป้อนfind()อาร์เรย์ของ ID ที่ฉันต้องการส่งคืนตามลำดับที่ฉันให้ได้อย่างไร


สนใจที่จะแสดงความคิดเห็นว่าทำไมจึงโหวตลง?
justinl

1
โหวตลงอีกหรือไม่? ทำไม? :) เอกสาร laravel ไม่ได้พูดอะไรเกี่ยวกับ findMany () หรือความสามารถในการส่งอาร์เรย์ไปยังฟังก์ชันค้นหา คำถามนี้ไม่ใช่คำถามที่ถูกต้องหรือไม่? :)
justinl

4
โหวตให้คุณคำถามนี้ช่วยฉันได้ :) ผมไม่ได้เห็นfindManyในเอกสารอย่างใดอย่างหนึ่งและก็ในเอกสาร API
Peter Liang

คำตอบ:


238

ง่ายมาก ใช้findMany:

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

นอกจากนี้คุณยังสามารถส่งอาร์เรย์ไปยังfind()และจะเรียกภายในfindMany:

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

ภายใต้ประทุนมันก็ทำwhereInเพื่อให้คุณทำได้เช่นกัน:

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

มันดูหรูหราและเรียบง่าย ขอบคุณสำหรับคำตอบ.
chocolata

8
คุณอาจจะบอกว่ามันคมคาย ;)
musicin3d
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.