string ↔ BINARY(16), encrypted fields, or legacy schema mismatches). This aligns well with:
$casts, but provides column-level granularity (e.g., per-attribute transformations without casting entire fields).Weebly\Mutate\Database\Model (or use traits for partial adoption).config/mutators.php.string when DB stores BINARY).$casts or accessors/mutators suffice? Mutators here offer column-level precision (e.g., transform only on DB I/O, not all model access).BINARY columns) interact with existing mutators?string timestamps) but DB stores DATETIME.User::ip_address).use \Weebly\Mutate\HasMutators) to avoid full model inheritance.string ↔ BINARY).config/mutators.php to avoid scattered logic.'models' => [
App\Models\User::class => [
'ip_address' => [
'get' => \Weebly\Mutate\Transformers\BinaryToIp::class,
'set' => \Weebly\Mutate\Transformers\IpToBinary::class,
],
'password' => [
'get' => \Weebly\Mutate\Transformers\Decrypt::class,
'set' => \Weebly\Mutate\Transformers\Encrypt::class,
],
],
],
BINARY(16) for IPs").attributeCast changes in L9).openssl for cryptographic mutators.BINARY types (e.g., pack()/unpack() for IP conversion).RefreshDatabase tests to validate mutators across environments.string ↔ BINARY, int ↔ JSON).LaravelMutatorServiceProvider and publish config.Database\Model or use traits for targeted models.config/mutators.php must stay in sync with schema changes.mutators.staging.php).IpToBinary) may need updates if business logic changes (e.g., IPv6 support).BinaryToIp failure might manifest as a 500 error, not a clear "invalid IP" message.try-catch blocks in transformers with meaningful error messages.// Debug: Dump all mutators for a model
dd(app(\Weebly\Mutate\MutatorResolver::class)->getMutatorsForModel(User::class));
cache or env).memory_usage in production.BINARY(16) for IPs).ip_address as a model attribute).public function getIpAddressAttribute($value) {
return cache()->remember("user.{$this->id}.ip", now()->addHours(1), fn() =>
$this->mutate('ip_address', 'get')
);
}
| **Failure Scenario
How can I help you explore Laravel packages today?