كيفية تحديث" واحد لكثير " العلاقة في لارافيل?(لا يمكن العثور عليه في المستندات)

StackOverflow https://stackoverflow.com//questions/22003280

  •  20-12-2019
  •  | 
  •  

سؤال

<?php
class User extends Eloquent {

    public function tickets()
    {
        return $this->hasMany('Tickets')

    }
}

class Tickets extends Eloquent {

    public function User()
    {
        return $this->belongTo('User')

    }
}


//and how to update a Ticket that belongs To User?


// and this dosen't work...Who can tell me the reason ,thanks !
$ticket = User::find(1)->tickets()->where('type','sometype')->get();
$ticket.update(array('status'   =>    0));
هل كانت مفيدة؟

المحلول

ال update() تم توثيق الاستعلام بوضوح تام في المستندات الرسمية:

User::find(1)->tickets()->where('type','sometype')->update(array('status' => 0));

أظن أن المشكلة التي تواجهها هي أن الحصول على () ' الاستعلام يعود متعددة السجلات.لكي يعمل الاستعلام الخاص بك ، ستحتاج إلى التعامل مع القيمة التي تم إرجاعها كمجموعة إذا كانت السجلات ، ثم تكرارها وتشغيلها على كل سجل على حدة.

$tickets = User::find(1)->tickets()->where('type','sometype')->get();
foreach ($tickets as $ticket) {
    $ticket->update(array('status' => 0));
}

لاحظ أن بناء الجملة الصحيح لاستدعاء طريقة بليغة يتطلب سهما سابقا ->لا نقطة (.).

$record.update(array('foo' => 'bar'));   # Incorrect
$record->update(array('foo' => 'bar')); # CORRECT!

تحديث:

يجب أن تكون أسماء النماذج دائما المفرد, لا الجمع.لذلك ، فإن Ticket يجب تعريف النموذج على النحو التالي:

class Ticket extends Eloquent { // `Ticket`, not `Tickets`
    public function User()
    {
        return $this->belongTo('User')

    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top