我试图在 Laravel 8 中使用 3 种类型的用户登录,管理员、教师和学生,但是当我登录时出现以下错误
SQLSTATE[42S22]:未找到列:1054 未知列“0”在“where 子句”中(SQL:select * from users
where 0
in (OWxc4iUiHyKTY92N55CN1B6SGQfCoXZ2b5kod0it, admin@admin.com)限制 1)
这是LoginController.php
的代码public function login(Request $request)
{
$inputVal = $request->all();
$this->validate($request, [
'email' => 'required|email',
'password' => 'required',
]);
if(Auth::attempt(array(['email' => $inputVal, 'password' => $inputVal]))){
if (auth()->user()->is_admin == 0) {
return redirect()->route('admin.route');
}
if (auth()->user()->is_admin == 1) {
return redirect()->route('Teacher.route');
}
if (auth()->user()->is_admin == 2) {
return redirect()->route('Student.route');
}
}else{
return redirect()->route('login')
->with('error','Correo & Contraseña son incorrectos.');
}
}
这是迁移中的代码create_user_table
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//tabla para registrar usuarios
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->enum('is_admin', [0,1,2])->default(2);
$table->string('password')->nullable();
$table->rememberToken();
$table->timestamps();
});
}
模型 User.php
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use App\SocialPorfiles;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'is_admin',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
//relacion con los registros del socialite socialporfile
public function SocialPorfiles(){
return $this->hasMany(SocialPorfile::class, 'user_id');
}
}
MODEL SocialPorfile.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\User;
class SocialPorfile extends Model
{
use HasFactory;
//relacion con la tabla user
protected $fillable = ['user_id', 'social_id', 'social_name', 'social_avatar'];
public function user(){
return $this->belongsTo(User::class);
}
}
我能做什么?
答案 0 :(得分:0)
您将旧数组语法(array()
) 与新数组语法([]
) 混合在一起。并且您将所有参数传递给两个参数($inputVal
) 尝试使用以下内容:
if(Auth::attempt(['email' => $request->email, 'password' => $request->password])){
在 public function login(Request $request)
的 LoginController
方法中。