2014-07-17 4 views
0

J'ai une table avec des adresses e-mail et que vous voulez faire une sélection de disctinct (ne pas avoir des adresses e-mail en double dans mon résultat). La colonne avec l'adresse e-mail est appelé « mail_address »Laravel 4 sélectionnez distinct

J'ai essayé:

ContactMail::distinct('mail_address')->get(); 

Et:

ContactMail::distinct()->get(); 

Mais les deux me donner juste la table complète, aussi les lignes où j'ai la même adresse e-mail

La requête complète que je suis bâtiment ressemble à ceci:

$list = ContactMail::where('campaign_id', '=', $campaign_id) 
       ->where('mail_address', '!=', '') 
       ->distinct('mail_address') 
       ->get(); 

Qu'est-ce que je fais mal? Je n'ai pas trouvé de bon docu pour distinct.

Répondre

0
$list = ContactMail::where('campaign_id', '=', $campaign_id) 
      ->where('mail_address', '!=', '') 
      ->select('mail_address') 
      ->distinct() 
      ->get(); 
0

L'utilisation distinct dans ORM est un peu inutile - à la fin de chaque modèle est distinct.

Je suggère donc que vous ne chargez pas les modèles, mais seul champ que vous avez besoin:

$list = ContactMail::where('campaign_id', '=', $campaign_id) 
    ->where('mail_address', '!=', '') 
    ->distinct() 
    ->lists('email_address'); 

De cette façon, vous obtenez un tableau de courriels distincts, au lieu de modèles complets, ou des modèles incomplets lorsque en utilisant select et get