Не трогать метки времени для определенного поля - PullRequest
0 голосов
/ 07 марта 2019

У меня есть несколько моделей с метками времени и полями active и несколько частей в моем коде, где я их обновляю. Я хочу иметь возможность обновлять модель и трогать временные метки только тогда, когда обновленная модель меняет больше, чем действующее поле. Итак, мой код

 const leaveUntouched=["active"=>true]
 ...   
 $instance = $model::find($data["id"]);
 $changed = array_diff_assoc($data,$instance->toArray());
 $needTimestampTouch = array_diff_key($changed,self::leaveUntouched);
 if (empty($needTimestampTouch))
   $instance->timestamps = false;
 $instance->fill($data);
 $instance->save();

Было бы намного чище, если бы я мог определить это в самой BaseModel. Должен ли я расширить метод заполнения Eloquent / Model в моем базовом классе? И как бы я это сделал?

1 Ответ

0 голосов
/ 07 марта 2019

Для справки:

Я положил это в свой базовый класс, и он работает:

protected $preventTouch=['active'];

public function save(array $options = [])
{
    $needsUpdate=array_diff(
        array_keys($this->getDirty()),
        $this->preventTouch
    );
    $this->timestamps = count($needsUpdate) > 0;
    parent::save($options);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...