Laravel getDirty() возвращает пустое значение, когда не должно

Представьте модель Eloquent с такими свойствами:

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

Как можно сделать вывод, таблица имеет стандартные метки времени created_at_updated_at иDeleted_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() возвращает true без обновления БД. Кто-нибудь сталкивался с этим раньше?


person impleri    schedule 03.04.2014    source источник


Ответы (1)


Я думаю, что проблема была решена путем изменения свойства $guarded. Мой сейчас:

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