Laravel寻找错误的桌子

时间:2018-06-07 19:53:05

标签: php mysql laravel-5.6

我在模型类中指定了表名。 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

1 个答案:

答案 0 :(得分:1)

sizeproduct 可能是manytomany关系的数据透视表,因此如此处所述,数据透视表源自相关模型名称的字母顺序 (所以在你的情况下,产品首先出现)。

您可以在定义代码中更改它:

public function products()
{
    return $this->belongsToMany(Size::class,'size_product');
}

或者您可能更喜欢为数据透视表创建单独的迁移。