2017-03-21 7 views
1

Wie zählen Sie die DUPLICATE-Spalten in einer Datenbanktabelle unter Verwendung der eloquenten Modellabfrage?Doppelte Spalten in Laravel zählen

Zum Beispiel in SQL, gibt es diesen Befehl aus:

SELECT name, COUNT(email) 
FROM users 
GROUP BY email 
HAVING (COUNT(email) > 1) 

Der obigen Code wird die Namen von allen Spalten mit ähnlichen E-Mail-Adressen zurück.

Was ich versuche, die COUNT von doppelten Einträgen erhalten zu erreichen, dh

$noOfjobsFromSameCustomers = App\Workflow::count(); 

Aber ich brauche einen zusätzlichen Parameter angeben, dass die cust_id (eine Spalte in der Tabelle Workflows) dupliziert, so etwas wie:

$noOfjobsFromSameCustomers = App\Workflow::notDistinct()->orderBy('cust_id')->count(); 

Zum Beispiel angesichts der nachstehenden Tabelle:

ID NAME EMAIL 
1 John [email protected] 
2 Sam [email protected] 
3 Tom [email protected] 
4 Bob [email protected] 
5 Tom [email protected] 

Wie kann ich zählen, wie oft eine angegebene E-Mail-Adresse (z. [email protected]) wiederholt sich?

+0

Nicht klar, was Sie erreichen wollen. – Amarnasan

+1

Verwenden Sie einfach "where" und "count": App \ Was auch immer :: wo ('email', '[email protected]') -> count(); – Amarnasan

+0

Danke! Ich denke ich kann das auch irgendwie machen. –

Antwort

2

können Sie verwenden havingRow:

->havingRaw('COUNT(<columneName>) > 1') 
2

können Sie diese erhalten, indem rohe Abfrage

$result = DB::select(DB::raw(" select * from (
    SELECT name, COUNT(email) as e_count 
    FROM users 
    GROUP BY email 
)a where a.e_count > 1 "); 

und stellen Sie Ihre wo Bedingung in dieser Abfrage Bitte sehen Sie mehr Larave website