Phpartisanmakeuser Yani şöyle bir şey yapılabilir (MySQL kullandığınızı varsayıyorum):
orderByRaw("COALESCE(publish_date, '0000-01-01') DESC, created_at DESC")
COALESCE(publish_date, '0000-01-01')
size eğer publish_date varsa mevcut değerini, null ise 0000-01-01 yani en küçük tarihi verir. Bu durumda kayıtlar önce publish_date dolu olanlara göre büyükten küçüğe sıralanır, sonra 0000-01-01 gelir, hepsi aynı değere sahip olduğu için bu sefer created_at alanına göre büyükten küçüğe sıralanır.
+----+--------------+------------+
| id | publish_date | created_at |
+----+--------------+------------+
| 3 | 2023-08-17 | 2023-08-17 |
| 4 | 2023-08-15 | 2023-08-16 |
| 6 | 2023-08-14 | 2023-08-14 |
| 7 | 2023-08-13 | 2023-08-13 |
| 8 | 2023-08-12 | 2023-08-12 |
| 10 | 2023-08-10 | 2023-08-10 |
| 1 | NULL | 2023-08-19 |
| 2 | NULL | 2023-08-18 |
| 5 | NULL | 2023-08-15 |
| 9 | NULL | 2023-08-11 |
+----+--------------+------------+