Yii не может сохранить данные - неизвестный метод save () - PullRequest
0 голосов
/ 06 ноября 2018

Здравствуйте, я новичок в Yii Framework и пытаюсь сохранить данные в базу данных. Это не сработает, я не знаю, в чем проблема.

Контроллер:

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',
        ];
    }
}

Я уже создал базу данных с миграциями. Но я не знаю, почему происходит эта ошибка. Должен ли я включить какой-либо метод сохранения в модель или как я могу решить эту проблему. Я посмотрел и на другие примеры. Они идентичны моему коду. У вас есть идеи, в чем проблема?

1 Ответ

0 голосов
/ 06 ноября 2018

Ваш класс 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',
        ];
    }
}
...