Итого:
Laravel действительно имеет способы не обращаться к промежуточным таблицам.
Если записи нет (например комментариев), то подойдет вариант, предложенный
Koteezy$product->comments()->create(['a' => 'b'])
В моем случае записи уже существовали и их нужно было только соединить поэтому подходит вариант attach
$user->roles()->attach($roleId, ['expires' => $expires]);
док по теме
https://laravel.ru/docs/v5/eloquent-relationships