问题描述
我有一个问题,我想通过首先加载这样的模型来更新控制器中的belongsToMany关联的joinTable中的现有记录/额外字段:
SomeController.PHP
$query = $this->Object1
->find()
->contain([
'Object2' => [
'queryBuilder' => function (Query $q) use ($object2_id) {
return $q->where(['Objects2.id' => $object2_id]);
}
]
])
->matching('Object2',function ($q) use ($object2_id) {
return $q->where(['Object2.id' => $object2_id]);})
->where(['Object1.id' => object1_id]);
$user = $query->first();
然后我更新 joinData 中的一个字段:
SomeController.PHP
$object1->objects2[0]->_joinData->status = 1;
$this->usersTableObj->save($object1)
结果:字段没有更新,什么都没有发生。
我花了一天时间才找到解决方案(使用 setDirty()),我想与您分享:
SomeController.PHP
$object1->objects2[0]->_joinData->exampleField = 1;
$this->usersTableObj->save($object1)
$user->setDirty('objects2',true);
但我也想知道我的方法是否是更新 joinTable 记录的正确方法(查询感觉非常昂贵)?或者你宁愿选择一个简单的“取消链接”/“链接”?那么如何插入joinData字段内容呢?
谢谢 克里斯蒂安
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)