Doctrine 条令应在何时更新

Doctrine 条令应在何时更新,doctrine,Doctrine,我试图使用最简单的更新查询,但条令发出INSERT语句而不是update $q = Doctrine_Query::create() ->from('Image i') ->where('id = ?'); $image = $q->fetchOne($articleId, Doctrine_Core::HYDRATE_RECORD); $image->copyright = "some text"; $i

我试图使用最简单的更新查询,但条令发出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();

有趣的是,我在另一个模型上使用它,在那里它工作正常。也许我必须获取整个数组图才能工作(我有一对多关系中的另一个模型)?

我对原则也有类似的困惑。没有精力坚持到底,只是使用了DQL更新语法

->update('User u')
->set('u.username', '?', 'Jack Daniels')
->where(....)

不要,我重复不要在模型中使用_construct()方法

如果仔细阅读本手册,您会发现应该使用construct()方法(前面不带“_u”)。使用“\uuu-construct()”并在内部调用parent::\uu-construct()时,大多数事情都会起作用,但记录状态不是其中之一,这将导致各种问题,其中一个问题已在上面解释:)


我猜我们将不得不等待原则2.0:)

该方法适合我。

在模型和实体中使用构造函数。我不知道第一条原则,但第二条原则没有任何问题。这个答案是7年前写的:)
$q = Doctrine_Query::create()
->from('Image')
->where('id = ?' $id)
->fetchOne();

$q->copyright = "some text";
$q->save();

This should work.