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

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

4
Laravel Eloquent Sum ของคอลัมน์ความสัมพันธ์
ฉันทำงานเกี่ยวกับแอปพลิเคชัน shoppingcart และตอนนี้ฉันพบปัญหาต่อไปนี้ .. มีผู้ใช้ผลิตภัณฑ์และวัตถุในรถเข็น - ตารางรถเข็นมีเฉพาะคอลัมน์ต่อไปนี้: "id", "user_id", "product_id" และการประทับเวลา - UserModel "hasMany" Carts (เนื่องจากผู้ใช้สามารถจัดเก็บสินค้าได้หลายรายการ) - CartModel "เป็นของถึง" ผู้ใช้และ CartModel "hasMany" ผลิตภัณฑ์ ตอนนี้ในการคำนวณผลิตภัณฑ์ทั้งหมดฉันสามารถโทร: Auth::user()->cart()->count(). คำถามของฉันคือฉันจะรับ SUM () ของราคา (คอลัมน์ของผลิตภัณฑ์) ของสินค้าในรถเข็นโดยผู้ใช้รายนี้ได้อย่างไร? ฉันต้องการทำสิ่งนี้ให้สำเร็จด้วย Eloquent ไม่ใช่โดยใช้แบบสอบถาม (ส่วนใหญ่ฉันเชื่อว่ามันสะอาดกว่ามาก)

5
ฝีปาก - โดยที่ไม่เท่ากับ
ฉันกำลังใช้ Laravel เวอร์ชันล่าสุด ฉันได้ลองใช้คำค้นหาต่อไปนี้: Code::where('to_be_used_by_user_id', '<>' , 2)->get() Code::whereNotIn('to_be_used_by_user_id', [2])->get() Code::where('to_be_used_by_user_id', 'NOT IN', 2)->get() ตามหลักการแล้วควรส่งคืนระเบียนทั้งหมดยกเว้นuser_id = 2แต่จะส่งคืนอาร์เรย์ว่าง ฉันจะแก้ไขปัญหานี้ได้อย่างไร Code::all() สิ่งนี้ส่งคืนทั้ง 4 ระเบียน รหัสรุ่น: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Code extends Model { protected $fillable = ['value', 'registration_id', 'generated_for_user_id', 'to_be_used_by_user_id', 'code_type_id', 'is_used']; public function code_type() { return $this->belongsTo('App\CodeType'); } }
112 laravel  eloquent 

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

11
ลิงก์ Laravel Pagination ไม่รวมพารามิเตอร์ GET อื่น ๆ
ฉันใช้ Eloquent ร่วมกับคลาส Pagination ของ Laravel 4 ปัญหา:เมื่อมีพารามิเตอร์ GET บางตัวใน URL เช่น: http://site.com/users?gender=female&body=hotลิงก์การแบ่งหน้าที่สร้างขึ้นมีเพียงpageพารามิเตอร์เท่านั้นและไม่มีอะไรอื่น แม่แบบใบมีด {{ $users->link() }} มี->append()ฟังก์ชั่นสำหรับสิ่งนี้ แต่เมื่อเราไม่รู้ว่ามีพารามิเตอร์ GET อยู่กี่ตัวเราจะใช้append()พารามิเตอร์ GET อื่น ๆ ในลิงก์ที่แบ่งหน้าได้อย่างไรโดยไม่ต้องมีifโค้ดทั้งหมดที่ทำให้เทมเพลตเบลดของเรายุ่งเหยิง

1
ลาราเวล. ใช้ขอบเขต () ในโมเดลที่มีความสัมพันธ์
ฉันมีโมเดลที่เกี่ยวข้องสองแบบ: CategoryและPost. Postรูปแบบมีpublishedขอบเขต (วิธีการscopePublished()) เมื่อฉันพยายามรับทุกหมวดหมู่ด้วยขอบเขตนั้น: $categories = Category::with('posts')->published()->get(); ฉันได้รับข้อผิดพลาด: โทรหาวิธีที่ไม่ได้กำหนด published() ประเภท: class Category extends \Eloquent { public function posts() { return $this->HasMany('Post'); } } โพสต์: class Post extends \Eloquent { public function category() { return $this->belongsTo('Category'); } public function scopePublished($query) { return $query->where('published', 1); } }

7
จะเลือกจากแบบสอบถามย่อยโดยใช้ Laravel Query Builder ได้อย่างไร?
ฉันต้องการรับค่าด้วย SQL ต่อไปนี้โดยใช้ Eloquent ORM - SQL SELECT COUNT(*) FROM (SELECT * FROM abc GROUP BY col1) AS a; จากนั้นฉันพิจารณาสิ่งต่อไปนี้ - รหัส $sql = Abc::from('abc AS a')->groupBy('col1')->toSql(); $num = Abc::from(\DB::raw($sql))->count(); print $num; ฉันกำลังมองหาทางออกที่ดีกว่า โปรดบอกวิธีแก้ปัญหาที่ง่ายที่สุด

5
การป้องกันไม่ให้ Laravel เพิ่มหลายระเบียนในตาราง Pivot
ฉันมีความสัมพันธ์หลายต่อหลายอย่างที่ตั้งค่าและทำงานเพื่อเพิ่มรายการลงในรถเข็นที่ฉันใช้: $cart->items()->attach($item); ซึ่งจะเพิ่มรายการลงในตาราง Pivot (ตามที่ควร) แต่หากผู้ใช้คลิกที่ลิงก์อีกครั้งเพื่อเพิ่มรายการที่ได้เพิ่มไปแล้วจะสร้างรายการที่ซ้ำกันในตาราง Pivot มีวิธีในการเพิ่มระเบียนลงในตาราง Pivot เฉพาะในกรณีที่ไม่มีอยู่แล้วหรือไม่? ถ้าไม่ฉันจะตรวจสอบตาราง Pivot เพื่อดูว่ามีระเบียนที่ตรงกันอยู่แล้วได้อย่างไร

15
Laravel Eloquent: วิธีรับเฉพาะบางคอลัมน์จากตารางที่เข้าร่วม
ฉันมี 2 ตารางที่เข้าร่วมใน Eloquent คือธีมและผู้ใช้ รูปแบบธีม: public function user() { return $this->belongs_to('User'); } รูปแบบผู้ใช้: public function themes() { return $this->has_many('Theme'); } การโทร api ที่มีประสิทธิภาพของฉันมีลักษณะดังนี้: return Response::eloquent(Theme::with('user')->get()); ซึ่งส่งคืนคอลัมน์ทั้งหมดจากธีม (ไม่เป็นไร) และคอลัมน์ทั้งหมดจากผู้ใช้ (ไม่เป็นไร) ฉันต้องการเพียงคอลัมน์ 'ชื่อผู้ใช้' จากรูปแบบผู้ใช้ฉันจะ จำกัด การสืบค้นได้อย่างไร?
102 php  laravel  eloquent 

12
Laravel Eloquent - แตกต่าง () และ count () ทำงานร่วมกันไม่ถูกต้อง
ดังนั้นฉันจึงพยายามหาจำนวนของ pids ที่แตกต่างกันในแบบสอบถาม แต่ค่าที่ส่งกลับไม่ถูกต้อง นี่คือสิ่งที่ฉันพยายามทำ: $ad->getcodes()->groupby('pid')->distinct()->count() สิ่งที่ส่งคืนค่า "2" ในขณะที่ค่าที่ควรส่งคืนควรเป็น "1" เพื่อเป็นการแก้ปัญหาฉันกำลังทำสิ่งนี้: count($ad->getcodes()->groupby('pid')->distinct()->get()) สิ่งที่ทำงานได้ดีและส่งกลับ "1" มีกฎใดบ้างที่ไม่สามารถนับจำนวนและความแตกต่างในข้อความค้นหาเดียวกันได้ ฉันพบวิธีแก้ปัญหาแบบ "หนัก" ฉันต้องการให้ข้อความค้นหาเดิมใช้งานได้ :(

14
วิธีรับค่าที่แตกต่างกันสำหรับฟิลด์คอลัมน์ที่ไม่ใช่คีย์ใน Laravel
อาจจะค่อนข้างง่าย แต่ไม่รู้ว่าจะทำอย่างไร ฉันมีตารางที่สามารถมีค่าซ้ำสำหรับฟิลด์คอลัมน์ที่ไม่ใช่คีย์โดยเฉพาะ ฉันจะเขียนแบบสอบถาม SQL โดยใช้ Query Builder หรือ Eloquent ที่จะดึงแถวที่มีค่าต่างกันสำหรับคอลัมน์นั้นได้อย่างไร โปรดทราบว่าฉันไม่ได้ดึงเฉพาะคอลัมน์นั้น แต่จะใช้ร่วมกับค่าคอลัมน์อื่น ๆ ดังนั้นdistinct()อาจไม่ได้ผลจริงๆ ดังนั้นคำถามนั้นโดยพื้นฐานแล้วอาจเป็นวิธีระบุคอลัมน์ที่ฉันต้องการให้แตกต่างในแบบสอบถามตอนนี้ที่distinct()ไม่ยอมรับพารามิเตอร์?

6
เปลี่ยนคีย์หลักเริ่มต้นใน Eloquent
ฉันสามารถเปลี่ยนคีย์หลักรุ่น Eloquent ได้ไหม ฉันต้องการตั้งค่าคีย์หลักเช่นadmin_idแทนที่จะเป็น 'id'? ฉันรู้ว่าฉันสามารถเปลี่ยนชื่อตารางสำหรับรุ่นที่ชอบได้ protected $table = "admin"; คีย์หลักมีอะไรคล้ายกันไหม

5
ใช้ Eloquent ORM ใน Laravel เพื่อค้นหาฐานข้อมูลโดยใช้ LIKE
ฉันต้องการใช้การสร้างบันทึกที่ใช้งานอยู่ของ Eloquent เพื่อสร้างคำค้นหา แต่จะเป็นการค้นหาแบบ LIKE ฉันพบUser::find($term)หรือUser::find(1)แต่สิ่งนี้ไม่ได้สร้างคำสั่งที่เหมือนกัน ฉันไม่ได้มองหาคำตอบที่ตรงไปตรงมา แต่อย่างน้อยถ้ามีใครสักคนช่วยชี้ทางให้ฉันดูได้ก็คงจะดีมาก

7
Laravel Eloquent - รับหนึ่งแถว
นี่อาจเป็นคำถามง่ายๆ แต่ฉันคิดไม่ออก ฉันกำลังพยายามหาผู้ใช้ทางอีเมลโดยใช้: $user = User::whereEmail($email)->get(); แต่นี่เป็นการส่งคืนอาร์เรย์ (ของมิติที่ 1) ของผู้ใช้ $ $user[0]['first_name']ดังนั้นถ้าผมต้องการที่จะได้รับชื่อที่ผมต้องทำ ฉันลองใช้limit(1)หรือtake(1)หรือแม้กระทั่งใช้->toArray()แต่ก็ไม่มีความแตกต่าง ผมทำอะไรผิดหรือเปล่า?
91 laravel  eloquent 

4
Laravel บันทึก / อัปเดตหลาย ๆ ความสัมพันธ์
ใครสามารถช่วยฉันเกี่ยวกับวิธีการรักษาความสัมพันธ์หลาย ๆ คน? ฉันมีงานผู้ใช้สามารถมีงานหลายอย่างและงานสามารถมีผู้ใช้หลายคน (หลายคนถึงหลายคน) สิ่งที่ฉันต้องการบรรลุคือในการอัปเดตผู้ดูแลระบบสามารถกำหนดผู้ใช้หลายคนให้กับงานเฉพาะได้ สิ่งนี้ทำได้ผ่าน html อินพุตที่เลือกหลายรายการ name="taskParticipants[]" สิ่งที่จับได้คือด้วยรูปแบบเดียวกัน (อินพุต) ที่คุณสามารถเพิ่ม / ลบผู้ใช้ได้นั่นคือเหตุผลที่ฉันต้องใช้ sync () บางทีฉันควรเริ่มจากจุดเริ่มต้น แต่ไม่รู้จะเริ่มตรงไหน ... นี่คือรูปแบบผู้ใช้ของฉัน: public function tasks() { return $this->belongsToMany('Task','user_tasks'); } รูปแบบงาน public function taskParticipants() { return $this->belongsToMany('User','user_tasks'); } TaskController public function update($task_id) { if (Input::has('taskParticipants')) { foreach(Input::get('taskParticipants') as $worker) { $task2 = …

10
โคลนวัตถุที่เก่งกาจรวมถึงความสัมพันธ์ทั้งหมด?
มีวิธีใดในการโคลนวัตถุ Eloquent รวมถึงความสัมพันธ์ทั้งหมดได้อย่างง่ายดาย? ตัวอย่างเช่นถ้าฉันมีตารางเหล่านี้: users ( id, name, email ) roles ( id, name ) user_roles ( user_id, role_id ) นอกเหนือจากการสร้างแถวใหม่ในusersตารางโดยที่คอลัมน์ทั้งหมดเหมือนกันยกเว้น idควรสร้างแถวใหม่ในuser_rolesตารางโดยกำหนดบทบาทเดียวกันให้กับผู้ใช้ใหม่ สิ่งนี้: $user = User::find(1); $new_user = $user->clone(); ที่รุ่นผู้ใช้มี class User extends Eloquent { public function roles() { return $this->hasMany('Role', 'user_roles'); } }

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