我有一个名为ReferrerMedium
的模型以及referrer_mediums
表的迁移。
这是我的班级:
namespace App;
class ReferrerMedium extends \Eloquent
{
//
}
这是我的迁移:
Schema::create('referrer_mediums', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
});
这是我的代码:
foreach (ReferrerMedium::all() as $referrer_medium) {
$options[$referrer_medium->name] = $referrer_medium->name;
}
此代码导致错误Base table or view not found: 1146 Table 'leadbind.referrer_media' doesn't exist
为什么它试图查询referrer_media
表而不是referrer_mediums
???
答案 0 :(得分:3)
因为medium
的复数类型是media
,所以你应该在模型中手动指定表名:
protected $table = 'referrer_mediums';
但我建议您进行迁移以更改表名。
答案 1 :(得分:2)
一般定义标准是,如果您创建一个具有复数名称的表并为此表创建模型为singular,则模型会自动连接相应的表,否则您应该在模型中定义表名,如:
$protected $table = 'referrer_mediums';
在您的情况下,模型名称为ReferrerMedium
,因此它会搜索ReferrerMedium
的单数,referrer_media
这就是问题背后的原因。
因此,您可以将表格创建为referrer_media
,或者如上所述在模型中定义表格名称。
希望你明白。