How can I access attributes using camel case?

后端 未结 3 1818
面向向阳花
面向向阳花 2020-12-14 02:01

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

3条回答
  •  悲&欢浪女
    2020-12-14 02:45

    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.

提交回复
热议问题