# 6. 修改 User model > 2017\.08.09 重新修改,加了动图,修改代码 本篇所讲的知识的官方文档在于 [eloquent-mutators](https://laravel.com/docs/5.4/eloquent-mutators)。 上一篇文章 [Ruby 程序员学习 laravel 框架笔记 (5)-简单的用户认证](https://www.rails365.net/articles/ruby-cheng-xu-yuan-xue-xi-laravel-kuang-jia-bi-ji-5-jian-dan-de-yong-hu-ren-zheng)讲到了 laravel 本身集成了登录和注册的功能,虽然这个功能已经很不错了,但有时候还是要根据自己的需求改改。 比如,用户名,我们要改成首字母大写的,比如,用户输入 `hfpp2012`,存到数据库的时候,我们要自动变成 `Hfpp2012`。 现在我们来实现一下。 ## 1. 修改 controller 首字母大写还是很简单的,一个函数即可,就是 `ucfirst`。 我们找到注册相关的 controller。 找到 `app/Http/Controllers/Auth/RegisterController.php` 文件。 把下面的这一段改一下: ``` // app/Http/Controllers/Auth/RegisterController.php <?php ... class RegisterController extends Controller { ... protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); } ... } ?> ``` 改成 ``` // app/Http/Controllers/Auth/RegisterController.php <?php ... class RegisterController extends Controller { ... protected function create(array $data) { return User::create([ // 注意这一行有变化,加了一个 ucfirst 函数 'name' => ucfirst($data['name']), 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); } ... } ?> ``` 这样就可以了,再去注册一个用户,应该变成了大写的首字母。 ![](https://box.kancloud.cn/65a72e921059aedd3182fb44c6e0e7f5_2108x1000.gif) 查看一下数据库,果然。 ![](https://box.kancloud.cn/781e66da3b87f37ffd458ca3985c1da6_2226x1098.gif) ## 2. 修改 model 就像 ruby 那样,这种代码我们一般不会放在 controller 中的,我们尽量地保持 controller 小,而 model 胖一些。 所以我们**去掉刚才的改动**,找到 User 这个 model,即是 `app/User.php` 这个文件。 我们加入下面的方法: ``` // app/User.php <?php ... class User extends Authenticatable { use Notifiable; ... // setNameAttribute 方法是新增的 // 为什么是 setNameAttribute 呢?因为你是 name 属性,如果你的属性名叫 password, 可以这里就要变成 setPasswordAttribute。 public function setNameAttribute($value) { $this->attributes['name'] = ucfirst($value); } } ?> ``` 你会发现效果一样的。 完结。 下一篇:[Ruby 程序员学习 laravel 框架笔记 (7)-User model 的 getter 方法](https://www.rails365.net/articles/ruby-cheng-xu-yuan-xue-xi-laravel-kuang-jia-bi-ji-7-user-model-getter-fang-fa)