2016-06-07 38 views
5

Veritabanımda website_tags adlı id, title vb. Içeren tablo var ve benzer yapıya sahip websites adlı bir tablo var. Ayrıca etiketler ve web siteleri arasındaki ilişkiyi içeren assigned_tags adlı bir tablo vardır, bu nedenle id, tag_id and website_id ilişkisini içerir.Laravel Sorgu Oluşturucusu birleştirme sayısından

İhtiyacım olan şey bu tabloları sorgu ile birleştirmek, tüm etiketleri almam ve bu etiketlerin kaç kez kullanıldığını saymam gerekiyor. TAG_ID:

1: men 
2: women 

Ve atanan etiketler kimliği gibi içerir: Yani, örneğin website_tags için aşağıdaki bilgiler içermektedir website_id bu etiket 'erkekler' 2 web siteleri ve etiketinde kullanılır yüzden alacak

1: 1: 1 
2: 1: 2 
3: 2: 2 

' kadın '1 kullanılır. Sorguyu nasıl oluşturmalıyım? İçin şimdi var:

DB::table('website_tags') 
->join('assigned_tags', 'website_tags.id', '=', 'assigned_tags.tag_id') 
->select('website_tags.id as id', 'website_tags.title as title', DB::raw("count(assigned_tags.tag_id) as count"))- 
>get(); 

Ama bu sorgu sadece assigned_tags satırları sayar, yanlıştır.

cevap

10

Çok sorgu, bir dakika önce bu yapılır,

bu

DB::table('website_tags') 
->join('assigned_tags', 'website_tags.id', '=', 'assigned_tags.tag_id') 
->select('website_tags.id as id', 'website_tags.title as title', DB::raw("count(assigned_tags.tag_id) as count")) 
->groupBy('website_tags.id') 
->get(); 
+0

yup gibi bir şey deneyin (sadece normal SQL benzeri) teşekkürler zaten saymak nasıl bilecek groupBy tanımlamak zorunda:) – Coffee