完整的错误:
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)
Run Code Online (Sandbox Code Playgroud)
我知道错误是错误日志中显示的名称与其他地方的名称之间的不匹配(在数据库文件夹中,但我无法解决问题.我搜索了一下并找到了这篇文章,但即便在我之后实现了解决方案(如下所示),我一直得到同样的错误.
我正在使用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');
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
?>
Run Code Online (Sandbox Code Playgroud)
以下是导致错误抛出的相关路由:
Route::post('/admin/register', [
'uses' => 'AdminController@postRegister',
'as' => 'register'
]);
Run Code Online (Sandbox Code Playgroud)
这是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');
}
Run Code Online (Sandbox Code Playgroud)
我已经php artisan migrate在作曲家中运行,但我得到了"无需迁移"的响应.我试过通过作曲家刷新数据库,但无济于事.表'admins'显示在phpmyadmin中.
更新1:添加了完整的错误消息
小智 14
错误来自验证部分:
$this->validate($request, [
'username' => 'required|unique:admin|max:30|min:3',
'password' => 'required|min:5',
'password_confirm' => 'required'
]);
Run Code Online (Sandbox Code Playgroud)
在检查username您是否引用admin数据库中的表的唯一性时,会调用该表admins(最后使用s).因此,Laravel正在寻找一个admin当然不存在的表.最后添加s,它应该工作.
| 归档时间: |
|
| 查看次数: |
10915 次 |
| 最近记录: |