Doctrine 条令应在何时更新
我试图使用最简单的更新查询,但条令发出INSERT语句而不是updateDoctrine 条令应在何时更新,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
$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.