我刚开始学习和理解水合作用的工作原理,只是想先指出这一点。我目前能够 Hydrate Select 和 Insert 查询没有任何问题。
我目前正忙于尝试 Hydrate Update 查询。在我的实体中,我为数据库中的每种类型的列设置了获取/设置选项。我发现 ObjectProperty() Hydrator 也最适合我的情况。
但是,每当我尝试仅更新一组列并通过水合器提取时,我都会遇到错误,因为所有其他选项都没有设置并且返回空值。我不需要更新特定行的所有内容,只需更新几列。
例如在我的数据库表中,我可能有:
- 姓名
- 电话号码
- 电子邮件地址
但我只需要更新phone_number。
$entity_passport = $this->getEntityPassport();
$entity_passport->setPrimaryPhone('5551239876');
$this->getTablePassport()->update($this->getHydrator()->extract($entity_passport), array(
'employeeid' => '1'
));
这将返回错误,因为 setName() 和 setEmailAddress() 未包含在此更新中,并且查询返回值不能为空。但很明显,当您查看数据库表时,那里已经有数据了。那里的数据也不需要更改,仅在此示例中更改 PrimaryPhone() 号码。
我一直在到处寻找和阅读文档,但我找不到任何可以解释我做错了什么的东西。我应该注意我只使用 Zend\Db(不是 Doctrine)。
我假设我错过了某个地方,因为我对我试图理解的这个新功能缺乏了解。
也许您没有 Hydrate Update 查询...我有点迷茫/困惑。任何帮助,将不胜感激。谢谢!