كيفية تحديث" واحد لكثير " العلاقة في لارافيل?(لا يمكن العثور عليه في المستندات)
سؤال
<?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')
}
}
لا تنتمي إلى StackOverflow