完整错误:
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)
我知道错误是错误日志中出现的名称与其他地方定义的名称不匹配(在数据库文件夹中,但我无法解决问题。我四处搜索并找到了 this 帖子,但即使在我实现了解决方案(如下所示)之后,我仍然遇到同样的错误。
我正在使用 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');
}
}
Admin 模型如下所示:
<?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;
}
?>
这是导致抛出错误的相关路由:
Route::post('/admin/register', [
'uses' => 'AdminController@postRegister',
'as' => 'register'
]);
这里是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: 添加了完整的错误消息
最佳答案
错误来自验证部分:
$this->validate($request, [
'username' => 'required|unique:admin|max:30|min:3',
'password' => 'required|min:5',
'password_confirm' => 'required'
]);
当检查用户名
的唯一性时,您指的是数据库中的admin
表,但是该表名为admins
(末尾有 s)。
因此 Laravel 正在寻找一个名为 admin
的表,它当然不存在。在末尾添加 s,它应该可以工作。
关于php - Laravel 错误 : SQLSTATE[42S02]: Base table or view not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35851563/