Laravel getDirty() กลับว่างเปล่าเมื่อไม่ควร

ลองนึกภาพโมเดล Eloquent ที่มีคุณสมบัติดังนี้:

class Campaign extends Eloquent
{
    protected $softDelete = true;
    protected $dates = ['started_at', 'ended_at'];
}

ดังที่สามารถอนุมานได้ ตารางนี้มีการประทับเวลามาตรฐานของ create_at_updated_at และ Delete_at นอกจากนี้ยังมีช่อง วันที่ สองช่อง: start_at และ end_at ในส่วนลึกของใบสมัครของฉัน ฉันกำลังพยายามอัปเดตวันที่พิเศษสองวัน:

$campaign->started_at = Carbon::parse(Input::get('activate-start', '+1 week'))->toDateString();
var_dump($campaign->getOriginal('started_at'), $campaign->started_at);
var_dump($campaign->getDirty());

var_dump แรกซึ่งเปรียบเทียบค่าดั้งเดิมกับค่าปัจจุบัน แสดงค่าความแตกต่าง อย่างไรก็ตาม getDirty() ส่งคืนอาร์เรย์ว่าง ด้วยเหตุนี้ $campaign->save() จึงคืนค่าจริงโดยไม่ต้องอัปเดตฐานข้อมูล มีใครเคยเจอสิ่งนี้มาก่อนหรือไม่?


person impleri    schedule 03.04.2014    source แหล่งที่มา


คำตอบ (1)


ฉันคิดว่าปัญหาได้รับการแก้ไขแล้วโดยการเปลี่ยนคุณสมบัติ $guarded ของฉันตอนนี้:

protected $guarded = ['id', 'created_at', 'updated_at', 'deleted_at'];
person impleri    schedule 17.05.2014