如何在Doctrine中的表中设置NULL

问题描述 投票:10回答:6

我有一些表qazxsw poi(qazxsw poi,qazxsw poi,qazxsw poi),我想改变一些行,设置parent_id = null。

我试图:

store_section

但这不起作用。如何在Doctrine中的表中设置NULL,在上面的示例中,parent_id变为= 0(不是= NULL)?

谢谢你的回复!

php doctrine
6个回答
12
投票

我会尝试以下之一:

1:

id

2:

parent_id

我没有测试过这些,但我记得之前有过类似的问题,只是不记得我是如何解决它的。希望这可以帮助!


5
投票

您可以使用方法集('u.name','NULL')例如:

label

2
投票

$record = $table->getTable()->find( $id ); $record->parent_id = null; $record->save(); 只有两种方法,而似乎与之相关的方法是$record = $table->getTable()->find( $id ); $record->parent_id = new Doctrine_Null(); $record->save(); 方法。因此,为了激活魔术方法,您需要将其转换为字符串:

$record = $table->getTable()->find( $id );
$record->parent_id = "NULL";
$record->save();

但老实说,没有理由,因为Doctrine_Query::create()->update('User u')->set('u.name', 'NULL')->where('u.id = ?',$id); 只是抽象一个空字符串Doctrine_Null。我只能假设它只适用于这种情况,因为parent_id没有强制执行__toString属性。

设置值“NULL”似乎工作但实际上是一个字符串而不是NULL。

$record = $table->getTable()->find( $id );
$record->parent_id = (string) new Doctrine_Null;
$record->save(); 

试一试,如果你将'NULL'插入一行,而另一行是“自然的空”,你将两行拉出表并在每一行上做一个Doctrine_Null,你会看到一个是自然的null其他实际上是一个字符串。

如果要保持一致性并强制使用自然空值,请改用:

''

1
投票

在这种情况下,当字段是关系时。我完成了这项任务:

NULL

上面的Parent是关系名称。


0
投票
'NULL' !== null

0
投票

在Doctrine2中使用查询构建器,您还可以直接更新db中的值。

var_dump(serialize())
© www.soinside.com 2019 - 2024. All rights reserved.