- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* @ODM\Document()
*/
class My_Doctrine_Model
{
/** @ODM\id */
protected $id;
public function getId()
{
return $this->id;
}
public function setId($value)
{
$this->id = $value;
return $this;
}
}
代码
$myModel = new My_Doctrine_Model();
$myModel->setId(new MongoId());
// Id is my set id
$dm->persist($myModel);
// Id is my set id
$dm->flush();
// Id is overwritten and the object is inserted with an other one
为什么 Doctrine 会覆盖我的 set id?有什么办法可以防止这种情况发生吗?
新的 Id 在 PersistenceBuilder::prepareInsertData
中设置,当检查是否设置了 id 时说它不是。我不知道为什么 id 字段被排除在变更集中之外。
我多读了一点代码,发现原因是UnitOfWork::getDocumentActualData
中的最后一个if
。
else if ( ! $class->isIdentifier($name) || $class->isIdGeneratorNone()) {
$actualData[$name] = $value;
}
没有 else
所以没有为 id 设置值。
这是开发人员故意的设计选择吗?
这是在最近的一次提交中更新的,我还没有更新。不过,我不完全确定这是有意为之。
https://github.com/doctrine/mongodb-odm/commit/fb2447c01cb8968255383ac5700f95b4327468a3#L2L503
最佳答案
您可以使用 Doctrine ODM 的注释来使用自定义 ID 策略,例如 -
/** Document */
class MyPersistentClass
{
/** @Id(strategy="NONE") */
private $id;
public function setId($id)
{
$this->id = $id;
}
//...
}
有关可用于 Doctrine ODM 的不同自定义 ID 策略的更多信息,请参见此处 - http://doctrine-mongodb-odm.readthedocs.org/en/latest/reference/basic-mapping.html#basic-mapping-identifiers
关于mongodb - 如何使用 Doctrine ODM for MongoDB 设置我自己的 MongoId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10427421/
我需要 MongoDB 中的自动递增字段。我找到了 documentation on how to use a counter-collection in MongoDB . 但是,我的值 id 不是
我需要 MongoDB 中的自动递增字段。我找到了 documentation on how to use a counter-collection in MongoDB . 但是,我的值 id 不是
我在 ZF2 + Doctrine ODM + doctrine-mongodb-odm-module 上有应用,但找不到如何使用这些模块创建分页的示例。有没有这样的例子? 最佳答案 试试看这里Doc
我正在尝试通过特殊验证事件来验证数据完整性。我的 Phalcon\Mvc\Collection 模型使用一些 Phalcon\Mvc\Model\Validator 验证器实现了validation(
我有一个已经变成表格的 Doctrine mongodb 文档。该文档有两个 emebedOne 文档,它们也在表单中。正在验证主文档,但未验证嵌入文档。我正在使用自定义断言,但我认为这并不重要。 文
我目前正在处理嵌入文档,我需要从父文档中获取帐户信息以生成 URL。如何从嵌入文档的 getter 访问父文档? /** @文档 */ 类用户 { //... /** @EmbedOne(target
我想在我的项目中使用 doctrine ODM,我想为我的每个客户建立一个单独的数据库。我希望能够通过我的 API 在运行时管理客户端。我现在的问题是: 当我设置 doctrine ODM 时,我必须
我们正在使用 Symfony2/DoctrineOdm/MongoDB,当我们这样做时: if ($doc.referenceOne != null) { ... } 和 $doc.reference
我遇到以下问题:使用 distinct 时无法限制结果数。例子: $stores = $this->dm->createQueryBuilder('Application\Document\Item'
我开始编写 Doctrine 2 Mongo ODM 单元测试,但意识到我的代码中没有好的策略来执行此操作。我想运行测试并实际保留对象,但我希望允许在拆解中轻松删除我的测试数据。集合和数据库名称必须根
我想知道是否可以在 phalcon ODM 中进行批量删除(使用单个操作),而不是通过“delete()”方法获取文档并在循环中一个一个地删除它们? 我需要这样的东西: $db->users->rem
我已经按照 中的描述设置了一个类 http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/geospatial-querie
这可能是一个愚蠢的问题,但我正在努力在 mongoDB 文档中保存一个大数字。 基本上,我想保存一个可以大于 max int 值的数字。因此,我将我的文档字段声明为 @Field(type="floa
我一直在尝试减少 Web API 上的数据库查询数量。我的数据库有 3 个集合:playground、widget、token 一个 Playground 有很多小部件,一个小部件有一个 token
我一直收到这个错误: PHP Fatal error: Uncaught exception 'Doctrine\Common\Annotations\AnnotationException' wit
我正在 koajs 中构建一个样板应用程序供以后使用。我无法决定是否应该使用 ODM。我可以使用 ES6 类定义我的模式,即使我使用像 mongoose 这样的东西,我也可能最终会编写大量自定义验证器
继续我关于 EAV 的问题,我正在考虑使用MongoDB来存储产品属性。 我将使用 MongoDB(或其他文档数据库)存储此应用程序的目录部分 - 类别、产品及其所有相关信息。 我的问题是,当使用 O
我将如何在学说 odm 中模拟 SQL 中的 like 运算符? 用例:我想在变量 $search 的字段标题字符串中找到一个主题。 查询会是什么样子? 感谢所有回答 最佳答案 使用 MongoReg
我有一个关于(顺便说一句真的很棒!)Doctrine ODM 的简单问题。 假设您有这样的文档: /** * @Document */ class Test { /** @Id */
我想知道是否有相当于 MySQL-Query 的: SELECT COUNT(*) FROM users 在 MongoDB ODM 中? 这可能有效: $qb = $this->dm->cre
我是一名优秀的程序员,十分优秀!