2013-09-26 4 views
0

전자 메일을 보내려는 사용자/사용자 ID가 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 개의 전자 메일을 받습니까? 위의 내용이 명확하지 않은 경우 알려 주시기 바랍니다. 고맙습니다!! 나는 당신이 GROUPBY을 추가 할 수 있습니다 생각

+0

당신은 $ emailList''의 결과를 통해 반복하고 있습니다 후. 결과를'$ emailList> = 1'이라면 루프를 반복하지 말고 그냥 –

+0

@ 감사합니다. 방금 해결책을 시도 할 기회가 있었지만 사용자의 전자 메일 주소를 캡처하는 방법에 대해 다소 혼란 스럽습니다. 루프를 만들지 않는다면 (맞는 말이다) 어떻게'$ emailList> = 1'에 맞는 주소를 얻을 수 있습니까? – camelCase

답변

2

....

$ab->groupby('email'); 

당신의 선택

+0

Sean에게 감사드립니다. 이것은 완벽한 해결책이었습니다. 나는 이것을 읽고 매우 도움이된다. 다시 한번 감사드립니다. – camelCase

관련 문제