是的我阅读了文档,但有时候我也需要一些不是来自书籍的帮助。
我正在尝试编写一个脚本,只要管理员发布新的博客条目,该脚本就会向数据库中的所有用户发送电子邮件。到目前为止,这是我的代码:
public function actionCreate()
{
$model=new TbPost;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['TbPost']))
{
$model->attributes=$_POST['TbPost'];
$this->emailAll();
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
));
}
//email all Function
public function emailAll()
{
//assuming that id is from the email table(unless email is under a members table)
$sql = mysql_query("select email from tb_user");
while ($row = mysql_fetch_assoc($sql)) {
$to = $row['emailAdd'];
$subject = 'NEW UPDATE FROM ADMIN';
$message = 'HELLO TEST';
$headers = 'From: WEBMASTER@b.com' . "\r\n";
$headers .= 'BCC: ' . implode(', ', $to) . "\r\n";
mail($to, $subject, $message, $headers);
}
}
第一个函数“actionCreate”是yiis生成的函数,我添加了“$ this-> emailAll();”调用我创建的函数,以便在有新的创建时通过电子邮件发送给所有用户。
问题是,我知道sql不会工作,因为yii有自己的方式连接到数据库,我不知道我会怎么做。
答案 0 :(得分:1)
以下是您要查找的文档部分:http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder#building-data-retrieval-queries
另外,一个建议。如果未将逻辑嵌入控制器中,将来测试逻辑通常会更容易。
可能值得将代码移出控制器。有几个地方你可以出来,但我建议创建一个CActiveRecordBehavior,观看afterSave事件,并在你的帖子模型保存后发送一封电子邮件(包括帖子的链接?)。
答案 1 :(得分:0)
在我的回复中,我假设你也有一个用户模型。如果不这样做,那么你应该创建一个。
您的查询可以像这样转换为Yii表单
$rsltAllmails = User::model()->findAll();
这应该是一个对象数组,每个对象代表一行查询结果。您可以按如下方式处理它们:
foreach ($rsltAllmails as $recEmail) {
$to = $recEmail->emailAdd;
// ...
// ...and others ...
// ...
}