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