Laravel多对多关系错误

des4xlb0  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(91)

我有两个models,分别命名为PluginsUser,并带有表。我试图在名为create_users_plugins_table.phpmigration中拥有many to many relationship和名为plugin_userpivot table
以下是架构:

public function up()
{
    Schema::create('plugin_user', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id');
        $table->integer('plugins_id');
        $table->json('contents');
        $table->timestamps();
    });
}

User model中,我有以下关系函数:

public function userplugins(){

    return $this->belongsToMany('App\Plugins')->withPivot('contents');
}

在通过以下代码获取行时:

$user = User::findorFail($id);
return $user->userplugins()->first()->contents;

我得到以下错误:
SQLSTATE[42S02]:未找到基表或视图:1146表'nitsbuilder.plugins_user'不存在(SQL:选择plugins .*,plugins_user . user_id作为pivot_user_idplugins_user . plugins_id作为pivot_plugins_idplugins_user . contents as pivot_contents from plugins inner join plugins_user on plugins . id = plugins_user . plugins_id其中plugins_user . user_id =1限制1)
请帮助我修复这个bug。
谢谢

643ylb08

643ylb081#

问题出在你的表名上。错误显示它正在查找plugins_user,但你的迁移显示plugin_user表缺少s。这可能是由于模型的命名为Plugins,而模型的命名应为Plugin
更改表名或转到https://laravel.com/docs/5.1/eloquent-relationships#many-to-many查看如何更改关系的引用表。

wr98u20j

wr98u20j2#

看起来在迁移中,表名为

`plugin_user`

但是搜索

`plugins_user`

您可能需要使用表名更新Plugin模型。

相关问题