Eloquent dirty attributes can sometimes contain unchanged values due to identical check.

An identical check here causes the dirty attributes array to sometimes (or often, from my tests) contain unchanged fields, such as comparing foreign keys which could be a string and an int of the same value.

The other alternative to this would be ensuring any attributes are always cast as the same type, however this should probably be done within the model rather than relying on the user input.