To be consistent over my coding style, I'd like to use camelCase to access attributes instead of snake_case. Is this possible in Laravel without modifying the core framework? If so, how?
Example:
// Database column: first_name echo $user->first_name; // Default Laravel behavior echo $user->firstName; // Wanted behavior
Create your own BaseModel class and override the following methods. Make sure all your other models extend your BaseModel.
namespace App; use Illuminate\Foundation\Auth\User; use Illuminate\Support\Str; class BaseUser extends User { public function getAttribute($key) { if (array_key_exists($key, $this->relations)) { return parent::getAttribute($key); } else { return parent::getAttribute(Str::snake($key)); } } public function setAttribute($key, $value) { return parent::setAttribute(Str::snake($key), $value); } } Then for usage:
// Database column: first_name echo $user->first_name; // Still works echo $user->firstName; // Works too! This trick revolves around forcing the key to snake case by overriding the magic method used in Model.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With