用户模型 laravel 中的自定义表
Posted
技术标签:
【中文标题】用户模型 laravel 中的自定义表【英文标题】:custom table in user model 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... 的信息? 是的,我编辑了我的问题。谢谢 在下面查看我的答案 【参考方案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'],
]);
【讨论】:
以上是关于用户模型 laravel 中的自定义表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用验证“唯一”访问 Laravel 中的自定义文本框名称?
Laravel 5.6.7 和 Vue.js 中的自定义错误消息,尤其是组件