gpt4 book ai didi

mongodb - 如何注释 Doctrine MongoDB 中的子文档?

转载 作者:可可西里 更新时间:2023-11-01 09:55:52 26 4
gpt4 key购买 nike

我想实现应该模拟以下内容的 php 类:(Symfony,DoctrineMongoDBBundle)

Notification Collection { from { id , fname } , to , sentDate }

Member Collection { id , fname , lname , email , phone , regDate , ... }

我想告诉 ODM:“from 字段是一个对象,它只包含 2 个值,发件人的 id 和他的 fname”

我必须使用什么注解?我应该定义另一个类,比如 from.php 吗?或者我可以创建两个类如下:

/*
*@Document
*/
class Notification {
/*
*@Id
*/
protected $id;

/*
*@EmbedOne(targetDocument="Member")
*/
protected $from;

/*
*@ReferenceOne(targetDocument="Member")
*/
protected $to;

/*
*@Date
*/
protected $sentDate;
}


/*
*@Document
*/
class Member {
/*
*@Id
*/
protected $id;

/*
*@String
*/
protected $fname;

/*
*@String
*/
protected $lname;

/*
*@String
*/
protected $email;

.
.
.
}

如果它是正确的,在我的 Controller 中我如何控制“from”字段以仅保存成员对象的 id 和 fname?假设这样:

$senderUser;
$newNotification = new Notification();
$newNotification->setFrom($senderUser);

然后 $newNotification-> 从设置为一个成员对象,该对象包含有关成员的所有信息。但我只希望发件人的 id 和 fname 保留! (因为我的项目需要)请原谅我的英语语法错误。感谢您的帮助...

最佳答案

如果您坚持将通知的原始用户 ID 和名字嵌套在 from 字段中,那么您将需要 Embed One与 From 文档的关系,该文档又具有以下字段:

  • id:这应该是 Reference One与成员文档的关系。我建议使用 simple 选项作为引用,这样您就可以只存储成员(member)的 ID 值,而不是 DBRef。对象。
  • fname:这应该是一个字符串字段。 ODM 无法使其与引用的成员文档保持同步,因此您需要自行确保这一点。

就个人而言,Notification 文档看起来足够小,我可以直接在 Notification 上创建 fromMemberfromMemberFirstName 字段。然后,您可以在 setFromMember() 方法中添加一些逻辑,该方法还根据传递的 Member 参数设置 fromMemberFirstName 字段。

如果您想更进一步,可以探索使用 events监视 Member 对象的更改 fname 字段并发出查询以更新 Notification 文档,但这是一个单独的对话。

关于mongodb - 如何注释 Doctrine MongoDB 中的子文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com