Öncelikle UNION için şunları bilelim:
1 - Çekilecek sütunların sayısı birbirine eşit olmalı, ilk SELECT ile gelen sırada ve tipleri de aynı olmalı
2 - Sütun isimleri ilk SELECT ile belirtilen sütun isimlerini alır
3 - SELECT sorguların kendine ait ORDER BY ya da LIMIT özellikleri olacaksa sorgular parantez içine alınır.
4 - Genel sonuca ORDER BY, LIMIT vs. uygulanacaksa son SELECT sorgusundan sonra yapılır.
5 - Genel sonuca uygulanan ORDER BY işlemlerinde alias kullanılır. tablo_adi.alan şeklinde kullanım yapılamaz.
6 - UNION aynı olan kayıtları süzer ama UNION ALL tüm kayıtları aynı olsun olmasın getirir.
7 - UNION, UNION ALL'a göre daha yavaştır çünkü aynı kayıtların belirlenmesi için ek işlem gerektirir.
Şimdi sizin istediğinize gelelim;
Öncelikle ürün listeleme için ihtiyacımız olan alanları belirleyelim. Örneğin genel olarak id, title, image olur. Bu durumda sizin sorgunuz şu şekilde olabilir:
(SELECT id, title, image FROM table1 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title2, image2 FROM table2 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title3, image3 FROM table3 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title4, image4 FROM table4 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title5, image5 FROM table5 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title6, image6 FROM table6 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title7, image7 FROM table7 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title8, image8 FROM table8 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title9, image9 FROM table9 ORDER BY RAND() LIMIT 1)
UNION ALL
(SELECT id, title10, image10 FROM table10 ORDER BY RAND() LIMIT 1)
Burada title2, title3 vs ürünün adına gelen alan. Her tabloda 2. sıradaki sütun (adı önemli değil) string ifade olarak (yani genellikle VARCHAR) ürün adına karşılık gelen alan olmalıdır. Sonuç da kabaca şöyle olur:
+-----+----------------+----------------+
| id | title | image |
+-----+----------------+----------------+
| 3 | Ürün | urun.jpg |
| 16 | Diğer ürün | diger-urun.jpg |
| 222 | Başka bir ürün | baskbiurun.jpg |
| ... | ... | ... |
+-----+----------------+----------------+
Bu sorguyu Builder ile yazacaksanız:
https://laravel.com/docs/5.6/queries#unions
Diğer bir yol ise veri dönüşümü kullanmak. Her bir sorguyu ayrı yapacaksınız, sonuçları id, title ve image şeklinde olacak. Daha sonra hepsini tek bir Collection'da birleştireceksiniz.
https://laravel.com/docs/5.6/collections#method-union