Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel错误:SQLSTATE[42S02]:未找到基表或视图_Php_Laravel - Fatal编程技术网

Php Laravel错误:SQLSTATE[42S02]:未找到基表或视图

Php Laravel错误:SQLSTATE[42S02]:未找到基表或视图,php,laravel,Php,Laravel,完整错误: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'quotesapp.admin' doesn't exist (SQL: select count(*) as aggregate from `admin` where `username` = Admin) 我知道错误是错误日志中显示的名称与其他地方(在数据库文件夹中)定义名称的方式不匹配,但我无法解决问题。我四处搜索并找到了post,但即使在实现解决方案(如下所

完整错误:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'quotesapp.admin' doesn't exist (SQL: select count(*) as aggregate from `admin` where `username` = Admin)
我知道错误是错误日志中显示的名称与其他地方(在数据库文件夹中)定义名称的方式不匹配,但我无法解决问题。我四处搜索并找到了post,但即使在实现解决方案(如下所示)后,我仍不断收到相同的错误

我正在使用Laravel 5.2。我的数据库目录中有一个
admins
表,如下所示:

class CreateAdminsTable extends Migration
{

    public function up()
    {
        Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
            $table->string('username')->unique();
            $table->string('password');
            $table->rememberToken();
        });
    }

    public function down()
    {
        Schema::drop('admins');
    }
}
管理模型如下所示:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Authenticatable; 

class Admin extends Model implements \Illuminate\Contracts\Auth\Authenticatable
{
    protected $table = 'admins';
    use Authenticatable;
}

?>
这里是
postRegister
方法

 public function postRegister(Request $request) {

    $this->validate($request, [
        'username' => 'required|unique:admin|max:30|min:3',
        'password' => 'required|min:5',
        'password_confirm' => 'required'           
    ]);

    $password = $request['password'];
    $passwordConfirm = $request['password_confirm'];

    if ($password !== $passwordConfirm) {
        return redirect()->back()->with(['fail' => 'password fields do not match!']);
    }

    $admin = new Admin();
    $admin->username = $request['username'];
    $admin->password = $request['password'];
    $admin->save();

    return redirect()->route('index');       

}
我在composer中运行了
php artisan migrate
,但得到了“nothing to migrate”响应。我尝试通过composer刷新数据库,但没有效果。表“admins”显示在phpmyadmin中


更新1:添加了完整的错误消息

尝试将
受保护的$table='admins';
添加到trait之后的管理模型。

Laravel告诉您它找不到这样的表

dd()
是你的朋友

$admin = new Admin();
dd($admin);
检查它在属性上的表,它将为您指明正确的方向

假设数据库配置设置正确

此外,当您迁移一个DB并运行一个类时,它会将该步骤存储在迁移表中

因此,如果您想迁移更多内容,关键是要进行另一次迁移


若要进行更改,请使用
Schema::table
方法。

不确定是否相关,但我收到了该消息,因为我的模型与Db table的名称不同。如果不是模型的复数形式,可以在模型中添加受保护的表名。

错误来自验证部分:

  $this->validate($request, [
    'username' => 'required|unique:admin|max:30|min:3',
    'password' => 'required|min:5',
    'password_confirm' => 'required'           
]);
当检查
用户名的唯一性时
指的是数据库中的
admin
表,但该表称为
admins
(末尾有一个s)。
因此,Laravel正在寻找一个名为
admin
的表,它当然不存在。在末尾添加s,它应该会起作用。

我不确定你所说的“after trait”是什么意思?我确实在我的管理模型中的“use Authenticatable;”之后添加了您建议的行,但我得到了相同的错误。我尝试了您的建议,得到了以下响应“Class app\Admin未定义”,这太奇怪了,因为Admin是在app文件夹中定义的。请将其更改为\app\Admin@Frosty619我也相信这是事实。将
unique:admin
更改为
unique:admins
,让我们知道这是否有效。嗨@Maximilian Schwarzmüller你是个救生员,我读了所有重复的解决方案,但这句话救了我的命:
 错误来自验证部分
。请在模型类中输入受保护的表名。如下所述:受保护的$table='admins';位于管理模型的顶部
  $this->validate($request, [
    'username' => 'required|unique:admin|max:30|min:3',
    'password' => 'required|min:5',
    'password_confirm' => 'required'           
]);