yii无法保存数据-未知方法save()

omqzjyyz  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(413)

你好,我是一个新的yii框架,我试图保存数据到数据库。我不知道哪里出了问题。
控制器:

namespace app\controllers;

use app\models\Client;
use Yii;
use yii\web\Controller;

class ClientController extends Controller {

    /**
     * Displays Client_Register.
     *
     * @return string
     */
    public function actionAdd() {
        $model = new Client();
        if ($model->load(Yii::$app->request->post())) {

            if ($model->save()) {
                return $this->refresh();
            }
        }
        return $this->render('add', ['model' => $model,]);
    }
}

查看:

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

<?= $form->field($model, 'name')->textInput(['autofocus' => true]) ?>

<?= $form->field($model, 'lastname') ?>

<?= $form->field($model, 'birthday') ?>

<div class="form-group">
    <?= Html::submitButton('Save', ['class' => 'btn btn-primary', 'name' => 'add-button']) ?>
</div>

<?php ActiveForm::end(); ?>

型号:

namespace app\models;

use yii\base\Model;

/**
 * Client is the model behind the client form.
 */
class Client extends Model {

    public $id;
    public $name;
    public $lastname;
    public $birthday;

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

    /**
     * @return array the validation rules.
     */
    public function rules() {
        return [
            [['name', 'lastname', 'birthday',], 'required'],
        ];
    }

    public function attributeLabels() {
        return [
            'id' => 'Id',
            'name' => 'Name',
            'lastname' => 'Last Name',
        ];
    }
}

我已经用迁移创建了数据库。但我不知道为什么会发生这种错误。我是否应该在模型中包含一些保存方法,或者如何解决这个问题。我也看了其他的例子。它们和我的代码一样。你知道哪里出了问题吗?

4ngedf3f

4ngedf3f1#

你的 Client 类扩展 Model ,不支持在数据库中保存数据,因此 save() 方法未定义。如果您想使用数据库记录,您的模型应该扩展 ActiveRecord :

class Client extends ActiveRecord {

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

    public function rules() {
        return [
            [['name', 'lastname', 'birthday'], 'required'],
        ];
    }

    public function attributeLabels() {
        return [
            'id' => 'Id',
            'name' => 'Name',
            'lastname' => 'Last Name',
        ];
    }
}

相关问题