2013-09-26 48 views
0

我有一個'用戶評論'的數據庫,其中包含評論,userId,如果他們想通過電子郵件發送true/false。發送電子郵件給用戶,檢查'是' - php和modx

我的問題是,如果用戶對帖子評論5次,他們在該數據庫中5次,因此,他們得到5個相同的電子郵件。這裏是我的設置:

查找數據庫中的用戶希望通過電子郵件發送這個留言

$ab = $modx->newQuery('Comments'); 
$ab->leftJoin('modUserProfile','Profile',array('Profile.internalKey = Comments.author')); 
$ab->leftJoin('Bulletin','Bulletin',array('Bulletin.id = Comments.bulletin_id')); 
$ab->where(array('Comments.bulletin_id' => $bullId)); 
$ab->where(array('Comments.email' => 1)); 
$ab->select(array('Comments.*','Profile.fullname as fullname' , 'Profile.email as email' , 'Bulletin.title as title')); 
$emailList = $modx->getCollection('Comments',$ab); 

現在,給他們發電子郵件

foreach ($emailList as $e){ 
$modx->getService('mail', 'mail.modPHPMailer'); 
$modx->mail->address('to',$e->email); 
$modx->mail->set(modMail::MAIL_BODY,$message); 
$modx->mail->set(modMail::MAIL_SUBJECT,'A new comment has been posted!');} 

我應該使用電子郵件的用戶,讓他們只收到1封電子郵件,無論他們發表了多少評論?請讓我知道,如果上述不夠清楚。謝謝!!

+0

你通過'$ emailList'結果循環。不要循環,只要結果是'$ emailList> = 1'發送電子郵件 –

+0

@非常感謝這一點。我剛剛有機會嘗試您的解決方案,但我對如何捕獲用戶的電子郵件地址感到困惑。如果我不循環(這是有道理的),那麼我怎樣才能得到那些符合'$ emailList> = 1'的地址? – camelCase

回答

2

我想你可以添加一個GROUPBY ....

$ab->groupby('email'); 

後您的選擇

+0

謝謝肖恩,這是一個完美的解決方案。我讀了這個,這是非常有益的。再次感謝。 – camelCase

相關問題