我刚刚开始使用Laravel 5.我正在尝试设置一个从数据库表中检索所有数据的基本页面。我有一个表呼叫人,我有一个名为ContactController.php的控制器。控制器具有以下代码:
<?php namespace App\Http\Controllers;
use App\Contact;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class ContactController extends Controller {
public function index()
{
$people = Contact::all();
return $people;
}
}
当我访问我的页面时,出现以下错误:
QueryException in /home/vagrant/sites/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php line 614:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'homestead.contacts' doesn't exist (SQL: select * from `contacts`)
为什么要尝试访问homestead.contacts?我的桌子叫人。我从未创建过一个名为contacts的表。它从哪里绘制表名称,如何更正?
感谢。
答案 0 :(得分:3)
来自docs:
的引用请注意,我们没有告诉Eloquent我们的用户模型使用哪个表。除非明确指定了其他名称,否则该类的小写复数名称将用作表名。
因此,如果您没有定义任何其他内容,Laravel将采用您的类名的复数snake_case版本:
Contact => contacts
FooBar => foo_bars
要解决您的问题,请相应更改型号名称。在这种情况下,Person
将让Laravel搜索表people
。
或者在模型中明确指定表格:
class Contact extends Eloquent {
protected $table = 'people';
}
答案 1 :(得分:0)
您的app/Contact.php
型号中是否有正确的表格名称?
protected $table = 'people';
或者您使用的是错误的型号?
答案 2 :(得分:0)
将以下行添加到您的联系人模型(app / Contact.php)。
protected $table = 'people';
这样可行。