2017-03-16 58 views
1

我使用php artisan make:migration命令創建表。之後,我編輯遷移文件放置列並插入標準數據。 當我運行php migrate:referesh命令和所有的好處,我去數據庫和表是在那裏有一個正確的名稱和數據。Laravel - 表不存在

在數據庫中,表名是rolesStems。

我創建這樣一個模型:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class RolesStems extends Model 
{ 
    protected $fillable = ['id', 'value', 'order', 'active','id_stem', 'id_role']; 
} 

在我控制我這樣做:

use App\RolesStems as RolesStem; 
RolesStem::select('value')->where('active', '=', 1)->where('id_stem', '=', 1)->orderBy('id_role', 'asc')->get()); 

,我有此錯誤:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dbname.roles_stems' doesn't exist (SQL: select `value` from `roles_stems` where `active` = 1 and `id_stem` = 1 order by `id_role` asc) 

它把一個未知表名稱roles_stems,爲什麼?

我這樣做到其他表,同樣的方式,但與此表發生這種情況。

什麼問題?

回答

3

對於表的名稱rolesStemsmodel的名稱必須爲RolesStem

所以更改以下行:

class RolesStems extends Model 

class RolesStem extends Model 

這是默認的Laravel命名約定Reference

如果你不想遵循這個命名約定,然後把下面的代碼在你的模型:

protected $table = 'your_table_name'; 

使您的模型指向your_table_name

1

@ user3242861,默認情況下Laravel嘗試根據您的模型類名找到表,例如:您的類「RolesStems」th它會嘗試查找表「roles_stems」,如果它不可用,那麼它會給表或視圖不存在。

要覆蓋默認功能,您可以在模型類中明確定義表名,如下所示。

protected $table = 'your_table_name';