簡體   English   中英

教義ODM關聯未加載

[英]Doctrine ODM association not loaded

我已經開始使用Doctrine MongoDB ODM。 我有一個稱為Document ,它具有與originalFile到另一個稱為File文檔的關聯。

class Document extends AbstractDocument
{
/**
 * @var integer $id
 *
 * @MongoDB\Id
 */
protected $id;

/**
 * @var ImportSource
 *
 * @MongoDB\ReferenceOne(targetDocument="ImportSource", cascade="all", simple=true)
 */
protected $importSource;

/**
 * @var DocumentState
 *
 * @MongoDB\ReferenceOne(targetDocument="DocumentState", cascade="all", simple=true)
 */
protected $state;

/**
 * @var \DateTime $created
 *
 * @MongoDB\Date
 */
protected $created;

/**
 * @var \DateTime $modified
 *
 * @MongoDB\Date
 */
protected $modified;

/**
 * @var File $formattedFile
 *
 * @MongoDB\ReferenceOne(targetDocument="File", cascade="all")
 */
protected $formattedFile;

/**
 * @var File $originalFilename
 *
 * @MongoDB\ReferenceOne(targetDocument="File", cascade="all")
 */
protected $originalFile;

//getters, setters etc..
}

File

class File
{
/**
 * @var string
 *
 * @MongoDB\Id
 */
protected $id;

/**
 * @var FileType
 *
 * @MongoDB\ReferenceOne(targetDocument="FileType", cascade="all", simple=true)
 */
protected $type;

/**
 * @var string
 *
 * @MongoDB\String
 */
protected $basename;

/**
 * @var \DateTime
 *
 * @MongoDB\Date
 */
protected $created;

/**
 * @var \DateTime
 *
 * @MongoDB\Date
 */
protected $deleted;

/**
 * @var \MongoGridFSFile
 *
 * @MongoDB\File
 */
protected $file;

存儲文檔的工作沒有任何問題。 文檔和文件文檔存儲在MongoDB中。 當我加載Document$originalFile屬性為null 我不知道缺少什么。 映射是否錯誤,或者這僅僅是Doctrine中的錯誤?

編輯:

這就是我存儲文檔的方式:

//create if not exists
if ($documentObj === null) {
    $documentObj = new Document();
    $documentObj->setCreated(new \DateTime());
    //create file
    $file = new File();

} else {
    $documentObj->setModified(new \DateTime());
    //get file
    $file = $documentObj->getOriginalFile();
}
$file->setFile($pathToFile);
//set file
$documentObj->setOriginalFile($file);
//set import source
$documentObj->setImportSource($source);
//store document
$documents[] = $this->storeDocument($documentObj, $documentFields);

//... method storeDocument fills other properties of the document and finally persits the document:
$this->manager->persist($documentObj);
$this->manager->flush();

我不知道為什么,但是它現在正在工作...我被其他項目占用了幾天,回到了這些項目,再次運行了單元測試,一切正常。 我唯一要做的就是composer update 可能是與我的設置相關的錯誤。

我遇到了這樣的問題,它與元數據緩存有關,只是運行

bin/console cache:clear
bin/console doctrine:cache:clear-metadata 

如果您使用的是symfony內置緩存,也很了解這些命令

bin/console doctrine:cache:clear-query  
bin/console doctrine:cache:clear-result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM