Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for auditSync and auditDetach on Auditable custom Pivot class #954

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

txdFrancesco
Copy link

Allow the use of auditSync and auditDetach on BelongsToMany relations where the pivot class is an Auditable class.

This is useful in cases where the relation model is itself a Laravel model and may be updated (and thus audited) indipendently from the related models, without requring dedicated code around every ->auditSync call on the related models.

Copy link
Contributor

@willpower232 willpower232 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are you able to correct your spaces to match the rest of the code and add some tests for the functionality you've added?

@txdFrancesco
Copy link
Author

For the spaces sure, for the tests I'll need to add a couple of models to reproduce.
Users -> GroupMembers (with 'role' column) -> Groups could be an example of my case. Let me know if you have a better/preferred example structure. I'll update when I'm done, thanks

@txdFrancesco
Copy link
Author

I added some tests that cover sync, attach and detach with an Auditable custom Pivot class.
AuditAttach is not affected by my code change, I put in the test anyway for completeness. Let me know if it is better to remove it.

The other tests are failing without the code change and are passing now.

Copy link
Contributor

@willpower232 willpower232 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some final spaces and maybe wake up github actions

src/Auditable.php Outdated Show resolved Hide resolved
src/Auditable.php Outdated Show resolved Hide resolved
src/Auditable.php Outdated Show resolved Hide resolved
@bmoex
Copy link

bmoex commented Oct 24, 2024

I think auditAttach should be checked too if you want to implement fully

@txdFrancesco
Copy link
Author

txdFrancesco commented Oct 24, 2024

some final spaces and maybe wake up github actions

@willpower232 Sorry for the inconvenience, I'm not sure what should I do to make this pull request go through.
The spacing was fixed by your commit (I just fixed one more line), but it's not clear to me what you mean with "wake up github actions". Could you explain or point me in the right direction please?
Thank you

@txdFrancesco
Copy link
Author

I think auditAttach should be checked too if you want to implement fully

The bug was caused by the way the detach method creates the query to delete the pivot class (creating a new instance and not retrieving the one in the database). Attaching is not affected by it (there is no instance to retrieve), applying the changes would just remove the "created" audit on the pivot class, which is against the idea of having an auditable pivot class.

A full solution would be to rework how the detach method builds the query instead of wrapping with withoutAuditing, but frankly I don't know the codebase enough to make such an impactful change for what is an edge usecase.

@willpower232
Copy link
Contributor

I was confused as to why github actions wasn't working but it seems to be behaving now, I'll re read the PR shortly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants