yii向DB添加数据时出错

时间:2018-01-06 07:47:44

标签: php yii

include(label.php): failed to open stream: No such file or directory
(/Applications/AMPPS/www/framework-1.1.17/YiiBase.php:432)

我在yii1存储数据时遇到上述错误。下面是我的模型文件和控制器功能,用于向DB添加数据。我错过了什么吗?

<?php
 class account extends CoreModel {

public function tableName() {
    return 'account';
}

public function rules() {
    return array(
        array('id', 'label', 'created_at', 'updated_at', 'required'),
        array('id', 'integer'),
        array('created_at', 'updated_at', 'safe'),
        array('label', 'string', 'max' => 20),
    );
}
public function attributeLabels() {
    return array(
        'id' => 'ID',
        'label' => 'Label',
        'created_at' => 'Created At',
        'updated_at' => 'Updated At',
    );
}
 }

控制器功能:

function saveDetails(){
    $abc = new Account();

    $abc->id = Yii::app()->user->id;
    $abc->label = "Test";
    $abc->save();
    echo "done";
    exit;
}

2 个答案:

答案 0 :(得分:0)

改变这个:

array('id', 'label', 'created_at', 'updated_at', 'required'),

到此:

array(array('id', 'label', 'created_at', 'updated_at'), 'required'),

同样在这里:

array('created_at', 'updated_at', 'safe'),

为:

array(array('created_at', 'updated_at'), 'safe'),

但您不需要将created_atupdated_at指定为safe,因为它们出现在required规则中。

答案 1 :(得分:0)

似乎您$abc->label因某种原因触发了自动加载请求。可能是由于库相互冲突。你可以使用CActiveRecord&#39; s setAttributes()并像这样重写,以消除魔术方法/属性调用和自动加载混淆。

控制器功能

function saveDetails(){
    $abc = new Account();
    $abc->setAttributes([
        'id' => Yii::app()->user->id,
        'label' => "Test"
    ]);
    $abc->save();
    echo "done";
    //exit;
    Yii::app()->end(); // This is the clean exit from a Yii app.
}