【问题标题】:custom table in user model laravel用户模型 laravel 中的自定义表
【发布时间】:2020-05-22 22:04:17
【问题描述】:

我正在使用 oauth2 并且我的表 users 是 "coUsers" 。我在我的用户模型中添加了这个

应用\用户

protected $table = 'coUsers';
public function getAuthPassword()
    {
        return $this->pass;
    }

授权控制器

public function login(Request $request)
{
    $request->validate([
        'usuario' => 'required|string|email',
        'clave' => 'required|string',
        //'remember_me' => 'boolean'
    ]);
    $credentials = [
        'usuario' => $request->get('usuario'),
        'password' => $request->get('clave'),
    ];

    if(!Auth::attempt($credentials)){
        return response()->json([
            'message' => 'Unauthorized'
        ], 401);
    }

    $user = $request->user();
    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;
    if ($request->remember_me)
        $token->expires_at = Carbon::now()->addWeeks(1);

    $token->save();

    return response()->json([
        'access_token' => $tokenResult->accessToken,
        'token_type' => 'Bearer',
        'expires_at' => Carbon::parse($tokenResult->token->expires_at)->toDateTimeString()
    ]);
}

public function firstLogin(Request $request)
{
    $request->validate([
        'usuario' => 'required|string|email|unique:users',
        'clave' => 'required|string',
        'nuevaClave' => 'required|string'
    ]);

    $user = User::where('usuario', $request['usuario'])
                ->where('clave', $request['clave'])
                ->first();

    $user->clave = bcrypt($request['nuevaClave']);
    $user->first_login = false;
    $user->save();
    return response()->json([
        $user->toArray()
    ]);
}

身份验证登录工作正常,但我想在 firstLogin 中使用 User::where .... 我收到此错误:

Illuminate\Database\QueryException: SQLSTATE[42703]: Undefined column: 7 ERROR: column "usuario" 不存在 第 1 行:从 "users" 中选择 count() 作为聚合,其中 "usuario" = ... ^ (SQL: select count() as aggregate from "users" where "usuario" = xxxxx@gmail.com) 在文件 \vendor\laravel\framework\src\Illuminate\Database\Connection.php 第 669 行

查看 users 表,而不是使用我在模型中指定的表。

【问题讨论】:

  • 能否请您提供更多关于您在哪里呼叫 User::where... 的信息?
  • 是的,我编辑了我的问题。谢谢
  • 在下面查看我的答案

标签: laravel eloquent


【解决方案1】:

您可以在 firstLogin 方法中将 'usuario' => 'required|string|email|unique:users', 更改为 'usuario' => 'required|string|email|unique:coUsers',

您也可以在App\Http\Controllers\Auth\RegisterController 中的validator 方法中更改此'unique:users'

'email' => ['required', 'string', 'email', 'max:255', 'unique:users']

protected function validator(array $data)
{
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:coUsers'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
}

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 2022-01-23
    • 2018-08-26
    • 2016-01-04
    • 2021-01-12
    • 2015-09-30
    • 2014-02-07
    • 2015-06-18
    相关资源
    最近更新 更多