【问题标题】:SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' [duplicate]SQLSTATE [42S22]:找不到列:1054 未知列 '0' [重复]
【发布时间】:2021-08-06 21:47:28
【问题描述】:

我尝试在 laravel 8 中使用 3 种类型的用户登录,管理员、教师和学生,但是当我登录时出现以下错误

SQLSTATE[42S22]:找不到列:1054 'where 子句'中的未知列 '0'(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');
    }

}

模型 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);
    }
}

我能做什么?

【问题讨论】:

    标签: php


    【解决方案1】:

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

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

    LoginControllerpublic function login(Request $request)方法中。

    【讨论】:

    • 我正在使用那个条件 if(Auth::attempt(array(['email' => $inputVal, 'password' => $inputVal]))){ if (auth()-> user()->is_admin == 0) { return redirect()->route('admin.route'); }
    • 但错误仍在继续
    • 您是否将Auth::attempt 替换为我提供的那个?您的示例无效,您应该删除 array(...) 并仅保留 [] 内的值
    • 如果我使用 if(Auth::attempt(['email' => $inputVal, 'password' => $inputVal])){ without array 我有下一个错误 password_verify(): Argument #1 ($password) 必须是字符串类型,给定数组
    • 那是因为您使用了包含数组本身的$inputVal,请查看更新后的示例:)
    猜你喜欢
    • 2021-03-29
    • 2016-04-09
    • 2018-02-21
    • 2015-12-08
    • 2018-11-02
    • 2016-01-12
    • 2020-09-02
    相关资源
    最近更新 更多