SQLSTATE[42S22]:未找到列:1054 未知列 '0'

时间:2021-05-17 15:45:18

标签: php

我试图在 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);
    }
}

我能做什么?

1 个答案:

答案 0 :(得分:0)

您将旧数组语法(array()) 与新数组语法([]) 混合在一起。并且您将所有参数传递给两个参数($inputVal) 尝试使用以下内容:

if(Auth::attempt(['email' => $request->email, 'password' => $request->password])){

public function login(Request $request)LoginController 方法中。