php - 向 Laravel 样板用户模型添加新字段

标签 php mysql laravel post

我正在尝试向 Laravel 锅炉用户模型添加新字段。 在新的 Laravel 中,它有 App/User.php ,我可以在其中使用 $fillable 添加字段。

在样板中它有 app/Models/Access/User/User.php 并且它有 id 作为 protected protected $guarded = ['id']; 。 还有密码,remember_token as $hidden protected $hidden = ['password', 'remember_token']; 所以其他一切都是默认可填充的。

但是当我尝试向用户模型添加新字段时,它并没有添加到数据库表中。

表已经有名为 summery 的字段。

我已将 summery 字段添加到 register.blade.php 并尝试检查它是否通过。

return ($request); 添加到 App\Service\Access\Trait\RegistersUsers.php

 public function register(RegisterRequest $request)
{
    if (config('access.users.confirm_email')) {
        $user = $this->user->create($request->all());
        event(new UserRegistered($user));
        dd ($request);
      //  return redirect()->route('frontend.index')->withFlashSuccess(trans('exceptions.frontend.auth.confirmation.created_confirm'));
    } else {
        auth()->login($this->user->create($request->all()));
        event(new UserRegistered(access()->user()));
        return redirect($this->redirectPath());
    }
}

它返回

POST /register HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.8 Cache-Control: max-age=0 Connection: keep-alive Content-Length: 170 Content-Type: application/x-www-form-urlencoded Cookie: XSRF-TOKEN={{removed}} Host: localhost:8000 Origin: http://localhost:8000 Referer: http://localhost:8000/ Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36 _token=jwLZC59098AaUGFp4pYwv0m3sdEX91BhPvQn43Xq&name=test+user&password=testpass&password_confirmation=testpass&email=testmail%40test.com&summery=test+summery&terms=terms

但不是表没有正确更新。

我的其他表输入和数据检索很好。只有这个模型有问题。

如果您需要更多信息来帮助我解决这个问题,请告诉我。

编辑:

app/Models/Access/User/User.php的来源

<?php

namespace App\Models\Access\User;

use App\Models\Access\User\Traits\UserAccess;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Models\Access\User\Traits\Attribute\UserAttribute;
use App\Models\Access\User\Traits\Relationship\UserRelationship;

/**
 * Class User
 * @package App\Models\Access\User
 */
class User extends Authenticatable
{

    use SoftDeletes, UserAccess, UserAttribute, UserRelationship;



    /**
     * The attributes that are not mass assignable.
     *
     * @var array
     */
    protected $guarded = ['id'];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = ['password', 'remember_token'];

    /**
     * @var array
     */
    protected $dates = ['deleted_at'];
}

edit2 : dd ($request);

RegisterRequest {#430 ▼
  #container: Application {#3 ▶}
  #redirector: Redirector {#437 ▶}
  #redirect: null
  #redirectRoute: null
  #redirectAction: null
  #errorBag: "default"
  #dontFlash: array:2 [▼
    0 => "password"
    1 => "password_confirmation"
  ]
  #json: null
  #convertedFiles: []
  #userResolver: Closure {#356 ▶}
  #routeResolver: Closure {#355 ▶}
  +attributes: ParameterBag {#432 ▶}
  +request: ParameterBag {#429 ▶}
  +query: ParameterBag {#431 ▶}
  +server: ServerBag {#435 ▶}
  +files: FileBag {#434 ▶}
  +cookies: ParameterBag {#433 ▶}
  +headers: HeaderBag {#436 ▶}
  #content: "_token=Md4aX1QOSbxjDhLWQStyrKWMW25oKiD1mWU9xhgE&name=Test+User+two&password=testpass&password_confirmation=testpass&email=test%40test.com&summery=test+summery&terms=terms"
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: null
  #requestUri: null
  #baseUrl: null
  #basePath: null
  #method: "POST"
  #format: null
  #session: Store {#386 ▶}
  #locale: null
  #defaultLocale: "en"
}

编辑 3:来源 App\Events\Auth\UserRegistered.php

<?php

namespace App\Events\Frontend\Auth;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;

/**
 * Class UserRegistered
 * @package App\Events\Frontend\Auth
 */
class UserRegistered extends Event
{
    use SerializesModels;

    /**
     * @var $user
     */
    public $user;

    /**
     * @param $user
     */
    public function __construct($user)
    {
        $this->user = $user;
    }
}

最佳答案

这是我找到的解决方案, 转到 app\repositories\frontend\access\user\EloquentUserRepository.php

你会发现

    public function create(array $data, $provider = false)
{
    if ($provider) {
        $user = User::create([
            'summery' => $data['summery'], // add new field here
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => null,
            'confirmation_code' => md5(uniqid(mt_rand(), true)),
            'confirmed' => 1,
            'status' => 1,
        ]);
    } else {
        $user = User::create([
            'summery' => $data['summery'], // add new field here
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'confirmation_code' => md5(uniqid(mt_rand(), true)),
            'confirmed' => config('access.users.confirm_email') ? 0 : 1,
            'status' => 1,
        ]);
    }


}

检查我是如何向函数添加新字段“summery”的。添加新字段后,oost 请求会将新字段数据发送到数据库。

关于php - 向 Laravel 样板用户模型添加新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498365/

相关文章:

php - laravel 无法打开输入文件 : artisan (5. 3)

php - 插入SQL注入(inject)准备语句后网站没有数据输出

php - 应该使用 `if ($a != NULL)` 还是 `if ($a !== NULL)` 来控制程序流?

php - 用户点击弹出窗口上的保存按钮刷新主窗口

mysql - Google Cloud SQL 无法通过 ipv6 从 mac 上的 mysqlworkbench 连接

php - 如何在 Laravel 4 的 Eloquent ORM 中使用 IN 或 Nesting of queires

Laravel 无需应用强制转换即可获取数据

PHP - 如何判断页面是否被使用

php - xDebug 似乎安装正常,但无法与 NetBeans 连接

mysql - 使用 Django 从数据库中选择用于聚合计算的日期格式