我有兩個models
名稱Plugins
和User
與表分別。我試圖在名爲create_users_plugins_table.php
的migration
中命名爲,其中pivot table
的名稱爲plugin_user
。Laravel多對多關係錯誤
以下是架構:
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]: Base table or view not found: 1146 Table 'nitsbuilder.plugins_user' doesn't exist (SQL: select
plugins
.*,plugins_user
.user_id
aspivot_user_id
,plugins_user
.plugins_id
aspivot_plugins_id
,plugins_user
.contents
aspivot_contents
fromplugins
inner joinplugins_user
onplugins
.id
=plugins_user
.plugins_id
whereplugins_user
.user_id
= 1 limit 1)
請幫我解決這個錯誤。
感謝
希望你已經運行你的遷移?你的'Plugins'模型中的代碼是什麼? –
就這麼簡單:plugin_user!== plugins_user錯誤正好告訴你這個問題。您沒有定義plugins_user,而是plugin_user - 您可以在您的關係中更改被引用的表名稱https://laravel.com/docs/5.1/eloquent-relationships#many-to-many –
@ArifulHaque我已經這樣做了。 –