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 m
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.