我正在尝试使用最简单的更新查询,但是Doctrine会发出INSERT语句而不是UPDATE。
$q = Doctrine_Query::create()
->from('Image i')
->where('id = ?');
$image = $q->fetchOne($articleId, Doctrine_Core::HYDRATE_RECORD);
$image->copyright = "some text";
$image->save();
我也尝试过使用手册中的示例,但仍会插入新记录:
$userTable = Doctrine_Core::getTable('User');
$user = $userTable->find(2);
if ($user !== false) {
$user->username = 'Jack Daniels';
$user->save();
}
修改
手册中的这个例子有效:
$user = new User();
$user->assignIdentifier(1);
$user->username = 'jwage';
$user->save();
有趣的是,我在另一个模型上使用它,并且在那里工作正常。也许我必须获取整个数组图以使其工作(我有一对多关系中的另一个模型)?
答案 0 :(得分:1)
请勿重复不要在模型中使用__construct()方法。
如果您仔细阅读本手册,您将看到应该使用construct()方法(前面没有“__”)。大多数事情在使用“__construct()”并在其中调用parent :: __ construct()时会起作用,但记录状态不是它们中的一个,这将导致各种问题,其中一个问题如上所述:)
猜猜我们将不得不等待Doctrine 2.0:)
答案 1 :(得分:1)
replace()
方法适用于我。
答案 2 :(得分:0)
我与Doctrine有类似的混淆。没有足够的精力来完成,只是结束了使用DQL更新语法。
->update('User u')
->set('u.username', '?', 'Jack Daniels')
->where(....)
答案 3 :(得分:0)
$q = Doctrine_Query::create()
->from('Image')
->where('id = ?' $id)
->fetchOne();
$q->copyright = "some text";
$q->save();
This should work.