使用 Laravel all() 调用正确的数据库 Table
Calling Correct Database Table with Laravel all()
我才刚刚开始 Laravel 5。我正在尝试设置一个从数据库 table 检索所有数据的基本页面。我有一个 table 呼叫人员,我有一个名为 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?我的table叫人。我从未创建过 table 联系人。它从哪里绘制 table 名称,我该如何更正它?
谢谢。
您的 app/Contact.php
模型中的 table 名称是否正确?
protected $table = 'people';
还是您用错了型号?
引自docs:
Note that we did not tell Eloquent which table to use for our User model. The lower-case, plural name of the class will be used as the table name unless another name is explicitly specified.
因此,如果您没有定义任何其他内容,Laravel 将采用您的 class 名称的复数形式 snake_case:
Contact => contacts
FooBar => foo_bars
要解决您的问题,请相应地更改型号名称。在这种情况下 Person
将让 Laravel 搜索 table people
.
或在您的模型中明确指定 table:
class Contact extends Eloquent {
protected $table = 'people';
}
将以下行添加到您的联系人模型 (app/Contact.php)。
protected $table = 'people';
这会起作用。
我才刚刚开始 Laravel 5。我正在尝试设置一个从数据库 table 检索所有数据的基本页面。我有一个 table 呼叫人员,我有一个名为 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?我的table叫人。我从未创建过 table 联系人。它从哪里绘制 table 名称,我该如何更正它?
谢谢。
您的 app/Contact.php
模型中的 table 名称是否正确?
protected $table = 'people';
还是您用错了型号?
引自docs:
Note that we did not tell Eloquent which table to use for our User model. The lower-case, plural name of the class will be used as the table name unless another name is explicitly specified.
因此,如果您没有定义任何其他内容,Laravel 将采用您的 class 名称的复数形式 snake_case:
Contact => contacts
FooBar => foo_bars
要解决您的问题,请相应地更改型号名称。在这种情况下 Person
将让 Laravel 搜索 table people
.
或在您的模型中明确指定 table:
class Contact extends Eloquent {
protected $table = 'people';
}
将以下行添加到您的联系人模型 (app/Contact.php)。
protected $table = 'people';
这会起作用。