gpt4 book ai didi

mongodb - Doctrine 2 MongoDB 获取对象的子记录

转载 作者:可可西里 更新时间:2023-11-01 10:01:27 25 4
gpt4 key购买 nike

我正在使用 doctrine/mongodb-odm-bundle 我遇到了一个问题:我无法从文档中获取引用的行(或者我只是不知道该怎么做......)我有 2 个这样的一对多引用文档:首先

/**
* @MongoDB\Document(collection="categories")
*/
class Category
{
/**
* @var integer $id
*
* @MongoDB\Id(strategy="auto")
*/
private $id;

/**
* @var string $name
*
* @MongoDB\String
* @Assert\NotBlank()
* @Assert\MinLength(3)
*/
private $name;

/**
* @MongoDB\ReferenceMany(targetDocument="Application\Bundle\DefaultBundle\Document\Wallpaper", mappedBy="category")
*/
private $files;
.................
/**
* Set files
*
* @param array $files
*/
public function setFiles($files)
{
$this->files = $files;
}

/**
* Get files
*
* @return array $files
*/
public function getFiles()
{
return $this->files;
}

......................
第二

/**
* @MongoDB\Document(collection="wallpapers")
*/
class Wallpaper
{
/**
* @var string $id
* @MongoDB\Id(strategy="auto")
*/
protected $id;
/**
* @MongoDB\ReferenceOne(targetDocument="Application\Bundle\DefaultBundle\Document\Category", inversedBy="files")
*/
private $category;

/**
* Get category
*
* @return Application\Bundle\DefaultBundle\Document\Category $category
*/
public function getCategory()
{
return $this->category;
}

/**
* Set category
*
* @param Application\Bundle\DefaultBundle\Document\Category $category
*/
public function setCategory($category)
{
$this->category = $category;
}

}

这里是来自 Controller 的代码:

$category = $dm->getRepository('ApplicationDefaultBundle:Category')->findOneBy(...);
$wallpapers = $category->getFiles();

$wallpapers 和 $document->files 为 NULL。我如何检索与类别相关的记录?我如何从具体的墙纸对象中获取类别?有没有像标准 ORM 中那样的“JOIN”模拟?

最佳答案

映射看起来是正确的。我认为您的问题可能与查询有关。我还会检查 wallpapers 集合是否包含正确的文档,其中类别字段填充了正确的 DBRef 对象数据。

$category = $dm->getRepository('Application\Bundle\DefaultBundle\Document\Wallpaper')->findOneById($id);
$wallpapers = $category->getFiles(); // Will return a cursor to the wallpaper objects
foreach ($wallpapers as $wallpaper) {
do stuff
}

如果这不是问题,您能否粘贴您正在尝试的完整查询和来自两个集合的数据样本。

关于mongodb - Doctrine 2 MongoDB 获取对象的子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9791301/

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