Первое - нужно соблюдать правила именования:
Модель - Item -> таблица - items
Модель - Category -> таблица - categories
Pivot таблица category_item - в едиственном числе в алфавитном порядке по названию полей с полями item_id, category_id.
Очень классно об этом расписал
greabock
Если правила именования не соблюдаются, нужно четко указывать связующую таблицу и поля.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Items extends Model
{
protected $fillable = ['name'];
public function categories() // название релейшена во Множественном числе, связь же ManyToMany
{
return $this->belongsToMany(
Category::class, // Название модели
'items_categories', // название твоей связующей таблицы
'item_id', // ключ к текущей таблице в связующей таблице
'category_id' // ключ к внешней таблице в связующей таблице
);
}
}
Потом ты можешь работать так же как с любыми другими моделями через эту связь. Например
$item = Item::find($id)
$item->categories()->create($array_of_data)