2016-07-21 30 views
0

PluginsUserという名前の2つのmodelsがあります。私は、many to many relationshippivot tableというplugin_userという名前をつけて、migrationという名前のcreate_users_plugins_table.phpに入れようとしています。Laravel多対多関係エラー

スキーマで次のとおり

public function userplugins(){ 

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

コードに従うことによって行をフェッチ中:

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

私は関係する機能を以下きUser modelにおいて

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(); 
    }); 
} 

次のエラーが発生しました:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'nitsbuilder.plugins_user' doesn't exist (SQL: select plugins .*, plugins_user . user_id as pivot_user_id , plugins_user . plugins_id as pivot_plugins_id , plugins_user . contents as pivot_contents from plugins inner join plugins_user on plugins . id = plugins_user . plugins_id where plugins_user . user_id = 1 limit 1)

このバグを修正する際に私を助けてください。

おかげ

+0

あなたはすでに移行を実行していますか? 'Plugins'モデルのコードは何ですか? –

+1

それは簡単です:plugin_user!== plugins_userエラーはあなたに問題を正確に伝えます。あなたはplugins_userではなくplugin_userを定義しています - リレーション内の参照先テーブル名を変更することができますhttps://laravel.com/docs/5.1/eloquent-relationships#many-to-many –

+0

@ArifulHaque私は既にそれを行っています。 –

答えて

1

はあなたの移行のように見える、あなたのテーブル名が

`plugin_user` 

ですが

`plugins_user` 

の検索クエリは、あなたは、テーブル名を使用してPluginモデルを更新する必要がある場合があります。

1

問題は、テーブルの名前です。エラーはplugins_userを探していましたが、マイグレーションにはplugin_userのテーブルがありません。これは、どちらかプラグイン

なるテーブル名を変更したり、関連の参照先テーブルを変更する方法を確認するためにhttps://laravel.com/docs/5.1/eloquent-relationships#many-to-manyに行くべきモデルプラグインの命名である可能性があります。