abuthu 2015-03-29 17:17:45 7480次浏览 5条回复 0 0 0

官方推荐使用AR,获取用户数据,并保存到数据库

$model = new Customer;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
    // 获取用户输入的数据,验证并保存
},

为什么我这样写了以后,$model中的数据为空呢?数据库能添加记录,但是是一条空记录。 应该是load方法有问题

  • 回复于 2015-04-03 00:52 举报

    应该是你的Customer类中的代码问题,你试试用下debug里面的sql记录,就知道哪里出问题了;
    点击表单的提交按钮,然后点击debugger(页面底部中间位置)里的log,可以看到mysql的数据库插入语句;
    比如我这里提交后出现的正常的mysql语句:

    10	00:44:44.174	info	yii\db\Command::query	SHOW FULL COLUMNS FROM `releases`
    E:\web\Apache24\htdocs\basic\controllers\ReleaseController.php (11)
    11	00:44:44.175	info	yii\db\Connection::open	Opening DB connection: mysql:host=localhost;dbname=xunwu
    E:\web\Apache24\htdocs\basic\controllers\ReleaseController.php (11)
    12	00:44:44.195	info	yii\db\Command::query	SHOW CREATE TABLE `releases`
    E:\web\Apache24\htdocs\basic\controllers\ReleaseController.php (11)
    13	00:44:44.195	trace	yii\base\Model::onUnsafeAttribute	Failed to set unsafe attribute 'file' in 'app\models\ReleaseForm'.
    E:\web\Apache24\htdocs\basic\controllers\ReleaseController.php (12)
    14	00:44:44.213	info	yii\db\Command::execute	INSERT INTO `releases` (`type`, `name`, `campus`, `place`, `description`, `contact`, `picture_src`, `release_date`) VALUES ('0', '充电宝', '深旅', '教学楼J304', '小米', '13876576656', 'http://127.0.0.1:801/basic/web/uploads/1427993084.png', '15-04-03')
    E:\web\Apache24\htdocs\basic\controllers\ReleaseController.php (22)
    
  • 回复于 2015-04-28 21:55 举报

    之前也遇到过这个问题,我的情况具体原因是,表单所采用的一个普通的FormModel,和需要插入到的数据表model不对应。

  • 回复于 2016-06-04 17:41 举报

    我也是这情况啊,到底怎么回事呢

  • 回复于 2016-06-19 18:17 举报

    我也是,楼上解决了吗?

  • 回复于 2020-12-24 13:07 举报

    我也遇见了这个问题,我用的是基础版的Yii,教学视频中老师用的是升级版的;不知是否是这个原因;但我修改了一下Model类的load方法,在调用$this->setAttributes($data);方法时添加了第二个false参数,就好了;记得 $this->setAttributes($data[$scope]);记得这里也加一下false参数

您需要登录后才可以回复。登录 | 立即注册