RelationManager table action always injects the same record
What I am trying to do:
On a relation manager I have a table action, that displays audit log details.
Not all audit logs have details view, so I dynamically resolve content and visibility based on audit log class.
If you need any more context feel free to ask.
What I did:
I cleared every cache, debugged it, everything seems fine except the injection.
If I log the record in modalContent callback, it always points to the record of the first row in the table (even if we go to page 2, it will point to the record of first row on page 1).
The developer tools network logs dispatch the correct events with correct ids.
log_instance is an Attribute on AuditLog model, that resolves the audit type class with all the data.
My issue/the error:
For some reason, the action modalContent and modalWidth callbacks always get injected with the same record (model of the first row in the table).
Visibility callback works okay.
Code:
Solution:Jump to solution
So after some more debugging, i found the issue. It was in the User relationship to the auditLogs.
Since I have two morphs fields in auditLog (parent and related), this specific relationship queries by both of them:
```php
public function allAuditLogs(): MorphMany...
1 Reply
Solution
So after some more debugging, i found the issue. It was in the User relationship to the auditLogs.
Since I have two morphs fields in auditLog (parent and related), this specific relationship queries by both of them:
This was not working with the table actions. The table itself was OK, just the actions were not working.
I don't specifically like this solution, as it seems wrong, but I don't have the time to figure out the proper solution. Any tips are welcome.
I changed it to the following, and now it's working: