我正在加载很多User
和相关的Group
对象从自定义PDO查询(使用Doctrine连接=> $ dbh = Doctrine_Manager :: connection() - > getDbh();)。查询涉及DQL中不支持的交叉连接。PHP主义 - 完整性约束违规:1062重复条目(主键)
我手动创建的对象和传递的价值观,像这样:
foreach($pdo as $p) {
$u = new User();
$u->userid = $p['userid'];
$u->username = $['username'];
//$u->some_field; skipped on purpose
$u->Group->groupid = $['groupid'];
$u->Group->groupname = $['groupname'];
array_push($return, $set);
}
我希望能够保存的User()
对象(因为$u->some_field
的,可在这种情况下进行更改)。然而,学说试图插入并违反了密钥约束。
据我所知,该错误是抛出,但我希望能够只有更新some_field
列(也许最重要的是:不是该组)。 这是所有甚至可能使用上述预加载?
更改构造函数并没有帮助...我目前使用更新查询来完成魔术,与(内部)记录状态混合似乎不太好,因为它在内部控制权.. ..? – Ropstah 2010-07-24 23:54:24
那么,_state是受保护的,所以所有扩展类都有权使用它。 如果你不想这样做比我试图用Doctrine_Hydrator_RecordDriver保存记录。看看Doctrine_Query_Abstract :: execute()方法,看看教条如何保存对象。 – 2010-07-25 07:32:12