Yii docs说updateAttributes绕过验证并且记录直接更新到数据库中。 在我的模型中:
use yii\base\Component;
use frontend\models\Notifications;
class Notify extends \yii\db\ActiveRecord
{
public function send($user, $text){
$model = new Notifications();
if ($model->updateAttributes(['created_on'=>'2015-11-12 12:12:15', 'user_id'=>$user, 'text'=>$text])) return true;
else return $this->getErrors();
}
public function notify($users, $text){
$arr[] = array();
foreach ($users as $user){
$result = $this->send($user, $text);
$arr[]= $result;
}
return $arr;
}
}
在我的控制器中
$notify = new Notify;
$response = $notify->notify([1, $guardian], $note);
var_dump($response);
现在问题是数据库既没有更新也没有显示任何错误。
我已尝试静态调用该方法,但之后数据库未更新。 我试过调用$ model-> save()..但是数据库仍然没有更新。
更新 我发现即使使用updateAttributes也会发生验证错误。现在的问题是为什么它是如此,而Yii文档说它没有验证。
更新2: 我错误地使用了$ this-> getErrors(),我用$ model替换了$ this。
答案 0 :(得分:0)
如果您对$model->save();
有疑问,请使用:
$model->save(false)
这解决了您的问题。
如果您使用$model->save();
过滤器正在运行,那对您不利。