У меня есть поле published_at
в моей модели, которую я настраиваю как дату углерода.Laravel Eloquent Dirty Checking Carbon Dates
class Model {
protected $dates = ['published_at'];
....
public function setPublishedAtAttribute($val)
{
$this->attributes['published_at'] = \Carbon\Carbon::createFromTimeStamp(strtotime($val));
}
}
Это заявка, устанавливаемая пользователем. Когда я бегу dirty
чек на него:
$article->fill($data);
echo $article->isDirty() ? 'true' : 'false';
Он всегда приходит dirty
. Я делаю что-то неправильно или это потому, что он пытается сравнить два объекта Carbon?
не связана с проблемой, но вы можете использовать 'Carbon :: синтаксический анализ ($ Вэл)' вместо из 'Carbon :: createFromTimeStamp (strtotime ($ val))' – lukasgeiter
Вам не нужно создавать мутаторный метод, Laravel автоматически преобразует его в экземпляр 'Carbon', если имя атрибута находится в свойстве' $ dates'. –
Я думаю, что наблюдение Мартинса, вероятно, является причиной того, что это грязно. Все атрибуты в массиве $ date автоматически преобразуются в Carbon, поэтому может быть задержка между созданием этой модели и ручным набором * Attrbitue, чтобы это было отмечено как грязное? – dotty