我在模型类中指定了表名。 Laravel 5.6,PHP 7
namespace App;
use Illuminate\Database\Eloquent\Model;
class SizeProduct extends Model
{
protected $table = 'size_product';
protected $fillable = ['product_id', 'size_id'];
}
这是我的迁移:
class CreateSizeProductTable extends Migration
{
public function up()
{
Schema::create('size_product', function (Blueprint $table) {
//some code here
});
}
public function down()
{
Schema::dropIfExists('size_product');
}
但我仍然会收到此错误:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db_name.product_size' doesn't exist
答案 0 :(得分:1)
sizeproduct 可能是manytomany
关系的数据透视表,因此如此处所述,数据透视表源自相关模型名称的字母顺序 (所以在你的情况下,产品首先出现)。
您可以在定义代码中更改它:
public function products()
{
return $this->belongsToMany(Size::class,'size_product');
}
或者您可能更喜欢为数据透视表创建单独的迁移。