У меня есть модель ‘Контракт’ и модель ‘ContractLine’ в классических отношениях мастер-деталь. В терминах Laravel: контрактные линии имеют отношение к контракту. Я хотел бы проверить все изменения, которые пользователь вносит в свои контракты. Не только изменения в общей таблице «контрактов», но также изменения / добавления / удаления в базовых «контрактных линиях».
Я смотрел на Laravel-аудит Оуэн-это, и CS-revisionable по csinghdev, но я не уверен, что они поддерживают этот вид аудита.
Любая помощь приветствуется.
Я решил свою проблему с помощью Laravel-аудит, пометка моей ContractLine с помощью идентификатора контракта (используя generateTags) и добавление метода ‘getAllAudits’ к моей модели контракта. Этот метод объединяет ревизии Контракта и лежащие в его основе ревизии ContractLine. В своей презентации аудита я проверяю поле «auditable_type» каждого аудита, чтобы различать аудиты по контрактам и аудиты по контрактным линиям.
Тем не менее, это кажется немного хакерским, нативное решение было бы лучше.
Я могу говорить за Laravel Auditing.
Действительно возможно проводить аудит нескольких таблиц (т.е. красноречивых моделей).
Чтобы достичь этого, вам придется реализовать Auditable
интерфейс в Contract
и ContractLine
моделей.
В основном, что-то вроде:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use OwenIt\Auditing\Contracts\Auditable;
class Contract extends Model implements Auditable
{
use \OwenIt\Auditing\Auditable;
// ...
}
Примените то же самое для ContractLine
модель.
Взгляните на основные разделы документация, который объяснил все, в том числе общие проблемы при использовании пакета.