我認爲你需要充實他們將如何相關。現在,根據你的關係代碼,Categories表中應該有一個user_id
。
這是類型模型之間的關係應該是什麼樣子:
public function users()
{
return $this->belongsToMany(User::class);
}
而你需要一個名爲category_user
一個表,讓這一關係。這裏的遷移是什麼樣子的例子:
Schema::create('category_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('category_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->timestamps();
$table->foreign('category_id')->references('id')->on('categories');
$table->foreign('user_id')->references('id')->on('users');
})
然後,你可以將用戶添加到類別在以下幾個方面:
$category->users()->attach(Auth::id());
Auth::user()->categories()->attach([ 1, 2, 3 ... ]);
,並刪除:
$category->users()->detach(Auth::id());
Auth::user()->categories()->detach([ 1, 2, 3 ... ]);
您也可以使用sync
,它可以分離不在陣列上的任何元素,並附加當前未連接的任何元素:
Auth::user()->categories()->sync([ 1, 2, 3, ... ]);
然後返回我:'SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'user_id'(SQL:從'categories'中刪除,其中'user_id' = 1)' – Darama
如果分類模型屬於給用戶,就像你在你的代碼中寫的那樣,類別表應該有一個列user_id – dparoli
我有三個表:User,Categories,User_categories,所以我需要從User_categories表中刪除 – Darama