php - 将 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
感谢帮助!
解决方案
$model->USER=$user->id;
代替
$model->populateRelation('USER',$user);
回答我的问题。但这是上帝解决问题的方法吗?
推荐阅读
- c# - Esp8266-服务器通讯
- c# - 在 AcceptBluetoothClient 之后直接发送消息 32feet
- amazon-web-services - 在 Lambda 函数中获取 Cognito 用户池组数据
- json - 用于验证通用输入的 Json Schema
- cassandra - Cassandra CQL 查询给出 ORDER BY ASC 和 LIMIT 错误
- c++ - 野牛解析器在输入结束时给出错误
- protractor - 如何通过占位符在量角器中定位元素
- eclipse - TFS 2015 eclipse 插件通知配置
- python - 检查特定像素是否在颜色范围内?
- android - 如何将optimized_graph.lite 文件转换为.tflite 文件?