У меня есть черта, называемая RecordsUserActivity, которая в основном создает запись в таблице действий, когда пользователь создает, обновляет или удаляет что -то, что использует эту черту. Вот код: < /p>
trait RecordsUserActivity
{
protected static function boot()
{
parent::boot();
foreach (static::getModelEvents() as $event) {
static::$event(function ($model) use ($event) {
$model->addActivity($event);
});
}
}
protected function addActivity($event)
{
$newActivity = [
'subject_id' => $this->id,
'subject_type' => get_class($this),
'action' => $event,
'user_id' => (Auth::id()) ?? null,
];
if ($event == 'updated') {
$newActivity['data'] = json_encode($this->getDirty());
}
UserActivity::create($newActivity);
}
protected static function getModelEvents()
{
if (isset(static::$recordEvents)) {
return static::$recordEvents;
}
return ['created', 'deleted', 'updated'];
}
}
< /code>
Тогда у меня есть другая черта, которая записывает изменения свойства в моделях, которые его используют. Вот код: < /p>
trait RecordsPropertyChangelog
{
protected static function boot()
{
parent::boot();
static::updated(function ($model){
$model->addPropertiesChangelog();
});
}
protected function addPropertiesChangelog()
{
$dirty = $this->getDirty();
foreach ($dirty as $field => $newData) {
$oldData = $this->getOriginal($field);
$this->addPropertyChangelog($field,$oldData,$newData);
}
}
protected function addPropertyChangelog($fieldName,$oldValue,$newValue)
{
PropertyChangelog::create([
'resource_id' => $this->id,
'resource_type' => get_class($this),
'property' => $fieldName,
'from_value' => $oldValue,
'to_value' => $newValue,
'data' => '{}',
]);
}
}
< /code>
Проблема появляется, когда я включаю обе признаки в модель и сделано обновление, существует какое -то столкновение с обоими обновленными событиями модели. Есть ли способ исправить это или я должен узнать другое решение?
Подробнее здесь: https://stackoverflow.com/questions/408 ... del-events
Использование признаков для применения нескольких модельных событий ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1748297868
Anonymous
У меня есть черта, называемая RecordsUserActivity, которая в основном создает запись в таблице действий, когда пользователь создает, обновляет или удаляет что -то, что использует эту черту. Вот код: < /p>
trait RecordsUserActivity
{
protected static function boot()
{
parent::boot();
foreach (static::getModelEvents() as $event) {
static::$event(function ($model) use ($event) {
$model->addActivity($event);
});
}
}
protected function addActivity($event)
{
$newActivity = [
'subject_id' => $this->id,
'subject_type' => get_class($this),
'action' => $event,
'user_id' => (Auth::id()) ?? null,
];
if ($event == 'updated') {
$newActivity['data'] = json_encode($this->getDirty());
}
UserActivity::create($newActivity);
}
protected static function getModelEvents()
{
if (isset(static::$recordEvents)) {
return static::$recordEvents;
}
return ['created', 'deleted', 'updated'];
}
}
< /code>
Тогда у меня есть другая черта, которая записывает изменения свойства в моделях, которые его используют. Вот код: < /p>
trait RecordsPropertyChangelog
{
protected static function boot()
{
parent::boot();
static::updated(function ($model){
$model->addPropertiesChangelog();
});
}
protected function addPropertiesChangelog()
{
$dirty = $this->getDirty();
foreach ($dirty as $field => $newData) {
$oldData = $this->getOriginal($field);
$this->addPropertyChangelog($field,$oldData,$newData);
}
}
protected function addPropertyChangelog($fieldName,$oldValue,$newValue)
{
PropertyChangelog::create([
'resource_id' => $this->id,
'resource_type' => get_class($this),
'property' => $fieldName,
'from_value' => $oldValue,
'to_value' => $newValue,
'data' => '{}',
]);
}
}
< /code>
Проблема появляется, когда я включаю обе признаки в модель и сделано обновление, существует какое -то столкновение с обоими обновленными событиями модели. Есть ли способ исправить это или я должен узнать другое решение?
Подробнее здесь: [url]https://stackoverflow.com/questions/40867904/using-traits-to-apply-multiple-model-events[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия