Ben bu ilişki ile üst içeriği gösterme mantığını bir türlü anlayamadım.
Benim hiyerarşim şu şekilde.
Node (Her içerik bir node 'dur)
->Node_content (Her node a ait bir içerik alanı vardır.)
->Node_category (Her node a ait bir kategori vardır.)
->Node_file (Her node a ait dosyalar vardır.)
->Node_commerce (Her node a ait birden fazla eticaret verileri olabilir. (44- 45 numara ayakkabı fiyatları farklı olabilir gibi).)
->Node_comment (Her node a ait yorumlar vardır.)
->Node_category_term (Her node nin categorisine ait filtreler vardır.)
vs. vs.
Misal ben fiyatı yüksekten aza doğru olan ürünleri listeletmek istiyorum. Bunun için aşağıdaki gibi bir kod yazıyorum.
Node::where('node_type', 'urunler')
->with('user', 'survey', 'category.parent', 'comments', 'file', 'content', "category.categoryTerm.termAdd", "commerce.nodeTermCommerce.term", "nodeTermContent.term");
$filtre->with([
'category' => function ($query) use ($category) {
$query->where('slug', $category[0]->slug);
},
]);
$filtre->with([
'commerce' => function ($query) use ($sort_order) {
$query->orderBy('price', $sort_order);
},
]);
$filtre->whereHas('category', function ($query) use ($category) {
$query->where('slug', $category[0]->slug);
});
$filtre = $filtre->get();
bu kodda sort yaptığım kısım commerce olduğu için with ile oraya bağlanıyorum. Aşağıdaki gibi,
$filtre->with([
'commerce' => function ($query) use ($sort_order) {
$query->orderBy('price', $sort_order);
},
])
Ancak node ları değil node_commerce leri sıralıyor. Oysa node_commerce'lere bağlı olarak node ları sıralamasını istiyorum. Bu iki model arasında böyle bir ilişkiyi nasıl yaparım bu bölümde de takıldım.