คำถามติดแท็ก eloquent

Eloquent ORM ที่มาพร้อมกับ Laravel มอบการใช้งาน ActiveRecord ที่สวยงามและเรียบง่ายสำหรับการทำงานกับฐานข้อมูลของคุณ ตารางฐานข้อมูลแต่ละตารางจะมี "Model" ที่สอดคล้องกันซึ่งใช้ในการโต้ตอบกับตารางนั้น แบบจำลองช่วยให้คุณสามารถสอบถามข้อมูลในตารางของคุณรวมทั้งแทรกระเบียนใหม่ลงในตาราง

3
Laravel Eloquent อัปเดตหากมีการเปลี่ยนแปลง
มีวิธีใดบ้างในการอัปเดตบันทึกใน Laravel โดยใช้แบบจำลองที่มีฝีปากหากมีการเปลี่ยนแปลงบันทึกนั้น ฉันไม่ต้องการให้ผู้ใช้ใด ๆ ขอฐานข้อมูลโดยไม่มีเหตุผลที่ดีซ้ำแล้วซ้ำเล่าเพียงแค่กดปุ่มเพื่อบันทึกการเปลี่ยนแปลง ฉันมีjavascriptฟังก์ชั่นที่เปิดใช้งานและปิดใช้งานปุ่มบันทึกตามว่ามีอะไรเปลี่ยนแปลงในหน้าหรือไม่ แต่ฉันต้องการทราบว่าเป็นไปได้หรือไม่ที่จะใช้คุณลักษณะนี้ในฝั่งเซิร์ฟเวอร์ด้วย ฉันรู้ว่าฉันสามารถทำได้ด้วยตัวเอง (หมายถึง: โดยไม่สนใจฟังก์ชันภายในของเฟรมเวิร์ก) เพียงแค่ตรวจสอบว่าบันทึกมีการเปลี่ยนแปลงหรือไม่ แต่ก่อนที่จะทำเช่นนั้นฉันต้องการทราบว่าโมเดลที่มีฝีปากของ Laravel ดูแลอยู่แล้ว ดังนั้นฉันไม่จำเป็นต้องประดิษฐ์ล้อขึ้นมาใหม่ นี่คือวิธีที่ฉันใช้ในการอัปเดตบันทึก: $product = Product::find($data["id"]); $product->title = $data["title"]; $product->description = $data["description"]; $product->price = $data["price"]; //etc (string values were previously sanitized for xss attacks) $product->save();
87 php  laravel  eloquent 

6
วิธีการรวมคอลเลกชันที่คมชัดสองชุด
ฉันมีตารางคำถามและตารางแท็ก ฉันต้องการดึงคำถามทั้งหมดจากแท็กของคำถามที่ระบุ ตัวอย่างเช่นฉันอาจมีแท็ก "การเดินทาง" "รถไฟ" และ "วัฒนธรรม" แนบไปกับคำถามที่ระบุ ฉันต้องการดึงคำถามทั้งหมดสำหรับแท็กทั้งสามนี้ ดูเหมือนว่าจะยุ่งยากก็คือความสัมพันธ์ของคำถามและแท็กเป็นแบบกลุ่มต่อกลุ่มที่กำหนดไว้ใน Eloquent เป็นเป็นของ ฉันคิดว่าจะพยายามรวมคอลเลกชันคำถามดังต่อไปนี้: foreach ($question->tags as $tag) { if (!isset($related)) { $related = $tag->questions; } else { $related->merge($tag->questions); } } ดูเหมือนจะไม่ได้ผล ดูเหมือนจะไม่รวมอะไรเลย ฉันพยายามอย่างถูกต้องหรือไม่? นอกจากนี้อาจมีวิธีที่ดีกว่าในการเรียกแถวของความสัมพันธ์แบบกลุ่มต่อกลุ่มใน Eloquent หรือไม่?

7
รับอินสแตนซ์ของชนิดย่อยของแบบจำลองด้วย Eloquent
ฉันมีAnimalรูปแบบตามanimalตาราง ตารางนี้มีtypeข้อมูลที่สามารถมีค่าเช่นแมวหรือสุนัข ฉันต้องการสร้างวัตถุเช่น: class Animal extends Model { } class Dog extends Animal { } class Cat extends Animal { } ถึงกระนั้นการที่สามารถเรียกสัตว์เช่นนี้ได้: $animal = Animal::find($id); แต่ที่$animalจะเป็นตัวอย่างของDogหรือCatขึ้นอยู่กับtypeเขตข้อมูลที่ฉันสามารถตรวจสอบการใช้instance ofหรือที่จะทำงานกับวิธีการบอกใบ้ชนิด เหตุผลก็คือรหัส 90% มีการแชร์ แต่หนึ่งสามารถเห่าและอื่น ๆ สามารถ meow ฉันรู้ว่าฉันสามารถทำได้Dog::find($id)แต่มันไม่ใช่สิ่งที่ฉันต้องการ: ฉันสามารถกำหนดประเภทของวัตถุได้เมื่อมันถูกดึงออกมาแล้ว ฉันยังสามารถดึงข้อมูลสัตว์แล้วเรียกใช้find()บนวัตถุที่ถูกต้อง แต่นี่เป็นการเรียกฐานข้อมูลสองสายซึ่งฉันไม่ต้องการ ฉันพยายามหาวิธีที่จะ "สร้างด้วยตนเอง" ยกตัวอย่างนางแบบ Eloquent เช่น Dog from Animal แต่ฉันไม่สามารถหาวิธีที่สอดคล้องกันได้ มีความคิดหรือวิธีการที่ฉันพลาดไปไหม
22 php  laravel  eloquent 

4
วิธีที่ดีที่สุดสำหรับประสิทธิภาพเมื่อกรองการอนุญาตใน Laravel
ฉันกำลังทำงานกับแอปพลิเคชันที่ผู้ใช้สามารถเข้าถึงหลายรูปแบบผ่านสถานการณ์ที่แตกต่างกัน ฉันกำลังพยายามสร้างวิธีการด้วยประสิทธิภาพที่ดีที่สุดเมื่อส่งคืนดัชนีของฟอร์มให้กับผู้ใช้ ผู้ใช้สามารถเข้าถึงแบบฟอร์มผ่านสถานการณ์ต่อไปนี้: แบบฟอร์มเป็นเจ้าของ ทีมเป็นเจ้าของแบบฟอร์ม มีสิทธิ์ให้กับกลุ่มที่เป็นเจ้าของแบบฟอร์ม มีสิทธิ์ให้กับทีมที่เป็นเจ้าของฟอร์ม ได้รับอนุญาตให้ใช้แบบฟอร์ม อย่างที่คุณเห็นมี 5 วิธีที่เป็นไปได้ที่ผู้ใช้สามารถเข้าถึงแบบฟอร์ม ปัญหาของฉันคือฉันจะส่งคืนแบบฟอร์มที่สามารถเข้าถึงได้ให้กับผู้ใช้อย่างมีประสิทธิภาพมากที่สุดอย่างไร นโยบายแบบฟอร์ม: ฉันพยายามรับแบบฟอร์มทั้งหมดจากแบบจำลองแล้วกรองแบบฟอร์มตามนโยบายแบบฟอร์ม ดูเหมือนว่าจะเป็นปัญหาด้านประสิทธิภาพเนื่องจากการทำซ้ำในตัวกรองแต่ละครั้งแบบฟอร์มจะถูกส่งผ่านเมธอดที่ประกอบด้วย () eloquent 5 ครั้งดังแสดงด้านล่าง แบบฟอร์มเพิ่มเติมในฐานข้อมูลหมายความว่าสิ่งนี้ช้าลง FormController@index public function index(Request $request) { $forms = Form::all() ->filter(function($form) use ($request) { return $request->user()->can('view',$form); }); } FormPolicy@view public function view(User $user, Form $form) { return $user->forms->contains($form) || $user->team->forms->contains($form) || …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.