Поскольку отношение категорий и таблицы продуктов - ManyMany, поэтому создайте сводную таблицу category_product, например:
Schema::create('category_product', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->bigInteger('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->bigInteger('product_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
});
Затем установите некоторые отношения и данные в 3 таблицах и используйте функцию ниже для разбивки на страницы:
public function categoryall($urlid)
{
$category_ids = Category::where('parent_id',$urlid)->pluck('id'); // = [1,2]
$products = Product::whereHas('categories', function($query) use ($category_ids) {
$query->whereIn('category_id', $category_ids);
})->paginate(5);
return $products;
}
И спроси меня, если нужно!