首页 > 解决方案 > 将 ActiveRecord 与相关模型一起保存

问题描述

我有与 USER 相关的表 TASK 作为多对一关系。我有 ActiveRecords 任务和 TodoUser。因此,当我创建任务时,我需要将用户附加到它并保存任务。Hy 代码如下所示 `

    $model = new Task();
    $user = TodoUser::findOne(['ID'=>Yii::$app->user->id]);
    $model->populateRelation('USER',$user);
    //load attrs into model and validate
    $model->save();

` 但是 Yii 抛出错误

cannot insert NULL into ("TODO"."TASK"."USER") The SQL being executed was: INSERT INTO "TASK" ("NAME", "DESCRIPTION") VALUES ('todo', 'to do todo') RETURNING "ID" INTO :qp2

用户正确获取,并且在 $model 中的 populateRelation() 之后它出现在关系中。似乎它试图只保存任务模型。那么有什么方法可以正确地让 sql 看起来像这样:INSERT INTO "TASK" ("NAME", "DESCRIPTION","USER") VALUES ('todo', 'to do todo',1) RETURNING "ID" INTO :qp2

感谢帮助!

标签: phpyii2

解决方案


$model->USER=$user->id;

代替

$model->populateRelation('USER',$user);

回答我的问题。但这是上帝解决问题的方法吗?


推荐阅读