2015-09-01 15:46:47 9792次浏览 1条回答 0 悬赏 10 金钱

学习数据库保存中遇到了一个问题,控制器里的代码如下:

$entry = new EntryForm;
//如果是Post请求提交
if(Yii::$app->request->getIsPost()){
    //表单模型设置属性为post值
    $entry->setAttributes(Yii::$app->request->post());
    //表单模型数据验证
    if ($entry->validate()) {
        //正确
        $result = $entry->save();
        var_dump($entry->attributes);
    } else {
        //返回错误提示
        var_dump($entry->getErrors());
    }
}else{
    //如果不是Post请求,正常显示模板
    return $this->render('entry',['model'=>$entry]);
}

最后能返回插入的id和数据,数据表里面相应的字段为空,只有id。

帖上EntryForm的代码:

<?php
namespace app\models;

use yii\db\ActiveRecord;

class EntryForm EXTENDS ActiveRecord{

    public $name;
    public $email;

    public static function tableName()
    {
        return '{{user}}';
    }

    public function rules()
    {
        return [
            [['name','email'],'required','message'=>'请填写!'],
            ['email','email','message'=>'邮箱格式不正确!'],
        ];
    }

}

最佳答案

  • sevenyearsold 发布于 2015-09-01 16:48 举报

    这里有问题,2.0的表前缀是`
    {{%user}}

    
    ` public static function tableName()
        {
            return '{{user}}';
        }
    `
    
    
    1 条回复
    回复于 2015-09-01 17:08 回复

    不是这个原因,我在模型里面定义了$name和$email,所以在BaseActiveRecord.php里的__set魔术方法里面未给$this->_attributes传递内容。

    觉得很赞
    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
hoogl
助理

hoogl 北京

注册时间:2015-08-24
最后登录:2020-04-15
在线时长:3小时55分
  • 粉丝1
  • 金钱140
  • 威望0
  • 积分170

热门问题