Задать вопрос

Почему ActiveRecord->save() сохраняет поля как null?

В контроллере есть такой метод:
public function actionAdd () {
        $req = json_decode(Yii::$app->request->getRawBody());
        $task = new Tasks();
        $task->name = $req->name;
        $task->save();
    }

Как видно, этот метод просто сохраняет новую модель в базу данных. Вот сама модель:
class Tasks extends ActiveRecord {
    
    public $name;
    
}


И ее миграция для MySQL:
class m180710_143740_create_tasks_table extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $this->createTable('tasks', [
            'id' => $this->primaryKey(),
            'name' => $this->string(),
        ]);
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        $this->dropTable('tasks');
    }
}


То есть, по сути, ничего сложного здесь нет. Однако, когда я пытаюсь добавить новую запись, метод save() сохраняет поля пустыми. При этом никаких ошибок нет, и способ с save(false) тоже не срабатывает. В самом объекте модели аттрибут name содержит данные, но, тем не менее, они все равно не сохраняются.
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
qonand
@qonand
Software Engineer
1. Если атрибуты ActiveRecord берутся из базы данных их не нужно отдельно объявлять как свойства класса
2. Где правила валидации в модели?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abdujabbor1987
попробуйте дабавить rules для вашей модели
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы