Аудит относится к отношениям в Laravel Eloquent

У меня есть модель ‘Контракт’ и модель ‘ContractLine’ в классических отношениях мастер-деталь. В терминах Laravel: контрактные линии имеют отношение к контракту. Я хотел бы проверить все изменения, которые пользователь вносит в свои контракты. Не только изменения в общей таблице «контрактов», но также изменения / добавления / удаления в базовых «контрактных линиях».

Я смотрел на Laravel-аудит Оуэн-это, и CS-revisionable по csinghdev, но я не уверен, что они поддерживают этот вид аудита.

Любая помощь приветствуется.

1

Решение

Я решил свою проблему с помощью Laravel-аудит, пометка моей ContractLine с помощью идентификатора контракта (используя generateTags) и добавление метода ‘getAllAudits’ к моей модели контракта. Этот метод объединяет ревизии Контракта и лежащие в его основе ревизии ContractLine. В своей презентации аудита я проверяю поле «auditable_type» каждого аудита, чтобы различать аудиты по контрактам и аудиты по контрактным линиям.

Тем не менее, это кажется немного хакерским, нативное решение было бы лучше.

1

Другие решения

Я могу говорить за 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 модель.

Взгляните на основные разделы документация, который объяснил все, в том числе общие проблемы при использовании пакета.

0