Laravel - Table 不存在
Laravel - Table does not exist
我用 php artisan make:migration
命令创建了一个 table。之后我编辑迁移文件以放置列并插入标准数据。
在我 运行 php migrate:referesh
命令并且一切正常之后,我转到数据库并且 table 那里有正确的名称和数据。
在数据库中 table 名称是 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)
它放了一个未知的 table 名称 roles_stems,为什么?
我以同样的方式对其他 table 执行此操作,但是使用此 table 会发生这种情况。
有什么问题?
因为你没有遵循Laravel naming conventions,你应该手动定义table:
protected $table = 'your_table_name';
对于 table 的名字 rolesStems
你的 model
必须有名字 RolesStem
因此更改以下行:
class RolesStems extends Model
到
class RolesStem extends Model
这是默认的 Laravel 命名约定:Reference
如果您不想遵循此命名约定,请将以下代码放入您的模型中:
protected $table = 'your_table_name';
所以你的模型指的是your_table_name
@user3242861,默认情况下 Laravel 尝试根据您的型号 Class 名称查找 table 例如:您的 class "RolesStems" 然后它会尝试找到 table "roles_stems" 所以如果它不可用那么它将给出 table 或视图不存在。
要覆盖默认功能,您可以在模型 class 中明确定义 table 名称,如下所示。
protected $table = 'your_table_name';
我用 php artisan make:migration
命令创建了一个 table。之后我编辑迁移文件以放置列并插入标准数据。
在我 运行 php migrate:referesh
命令并且一切正常之后,我转到数据库并且 table 那里有正确的名称和数据。
在数据库中 table 名称是 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)
它放了一个未知的 table 名称 roles_stems,为什么?
我以同样的方式对其他 table 执行此操作,但是使用此 table 会发生这种情况。
有什么问题?
因为你没有遵循Laravel naming conventions,你应该手动定义table:
protected $table = 'your_table_name';
对于 table 的名字 rolesStems
你的 model
必须有名字 RolesStem
因此更改以下行:
class RolesStems extends Model
到
class RolesStem extends Model
这是默认的 Laravel 命名约定:Reference
如果您不想遵循此命名约定,请将以下代码放入您的模型中:
protected $table = 'your_table_name';
所以你的模型指的是your_table_name
@user3242861,默认情况下 Laravel 尝试根据您的型号 Class 名称查找 table 例如:您的 class "RolesStems" 然后它会尝试找到 table "roles_stems" 所以如果它不可用那么它将给出 table 或视图不存在。
要覆盖默认功能,您可以在模型 class 中明确定义 table 名称,如下所示。
protected $table = 'your_table_name';