Merhaba,
Ateşli (Eager) Yüklemeler'de sıralama konusu dokümanlarda genellikle ana sorguya göre verilmiş, alt sorgular için verilen sıralamalar kendi içinde sıralamaya tabi tutuluyor. Aşağıdaki örnek kod üzerinden ilerlersek; 2 tane sıralama yapılıyor.
$posts = News::where(function ($query) {
$query->whereHas('Category', function($query){
#$query->where("status", 1);
$query->orderBy('name', 'asc');
});
})
->with("category")
#$query->where("status", 1);
->orderBy('id', 'DESC')
->limit(50)
->get();
- News modelinden gelen kayıtlar kendi içinde id'ye göre DESC sıralama yapılıyor.
- News modelinden gelen her bir kayda ait Category kendi içinde name alanına göre ASC sıralama tabi tutuluyor. Eğer tek bir kategorisi varsa sıralama yapmıyor ama birden fazla kategorisi varsa o kategorileri kendi arasında sıralıyor.
Eğer önce aşağıda SQL sorgusu verilen gibi yapmak istesek; Category.name'e göre sonra da News.id'ye göre sıralama yapmak istersek nasıl bir yol izlememiş gerekiyor. Siz bu tür sıralamalarda nasıl bir yol izliyorsunuz?
SELECT
N.*, C.*
FROM
news N
LEFT JOIN
category C
ON
C.id = N.category_id
ORDER By
C.name ASC, N.id DESC
LIMIT 100;
Teşekkürler.