аяксом) в одном из методов вызов обновления ресурса с помощью модели SiteContent и я хочу, чтобы у ресурса также обновлялась дата последнего редактирование, это editedon и editedby.
Внезапно что бы я не передавал в editedby оно игнорируется (поэтому закомментировано).
SiteContent::find($this->id)->update([
'editedon' => time(),
// 'editedby' => evo()->getLoginUserID('mgr'),
]);
Идём смотреть в модель, а там на updating стоит заполнение editedby, что вроде бы неплохо, но только без указания контекста метод getLoginUserID() даёт 0.
public static function boot()
{
// run parent
parent::boot();
static::updating(static function (SiteContent $entity) {
$entity->editedby = evolutionCMS()->getLoginUserID();
});
Ну и что тут делать?
Не могу сейчас проверить, но может надо использовать функцию touch() https://laravel.com/api/8.x/Illuminate/Database/Eloquent/Model.html#method_touch
Я видел про touch в ядре, проверю ещё раз.
Но там в таблице не стандартные created_at и edited_at поля, так что ларавелевское наверное не поможет.
А если через fill() $siteContent = SiteContent::find($this->id); $siteContent->fill([ 'editedon' => now(), 'editedby' => evo()->getLoginUserID('mgr'), ]); $siteContent->save();
Это не пробовал. Я пока пробую зайти с другой стороны - редактировать тот же ресурс с помощью DocumentManager, ещё в процессе.
Стикер
Обсуждают сегодня