繁体   English   中英

Symfony3一对多关系不起作用

[英]Symfony3 One-To-Many relation not working

我有实体ProjectFiles 一个项目可以有多个文件,而一个文件仅属于一个项目。 这是我的关系完成的方式

Files实体中

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Project", inversedBy="files")
     * @ORM\JoinColumn(name="project_id", referencedColumnName="id")
     */
    private $project;

Project实体中:

    /**
     * @var ArrayCollection
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Files", mappedBy="project")
     */
    private $files;

这是上传后创建新文件的方式

public function createFile($fileName,$project,User $user){
        $file = new Files();
        $file->setFilePath($this->targetDirectory."/".$fileName);
        $file->setFromUser($user->getType());
        $file->setProject($project);
        $file->setDate(new \DateTime());
        dump($file);
        $this->entityManager->persist($file);
        $this->entityManager->flush();
    }

刷新项目后,将在ProjectController中调用此函数(这将为其提供ID,然后我可以使用该ID来创建我的文件)。 这是代码

$projectService->createProject($project, $user, $isWithoutTerm, self::NO_TERM_DEFAULT_VALUE);
$filesService = $this->get('app.service.files_service');
foreach ($managerFiles as $managerFile) {
   $fileName = $filesService->uploadFileAndReturnName($managerFile,$this->getParameter('files_directory'));
   $filesService->createFile($fileName, $project, $user);

 }

一切设置完成后,我有了一个项目和文件。 在文件表中,我看到project_id与创建的项目的ID。 然后,我尝试使用files属性从项目中获取所有文件。 在我的控制器中,我有dump(project->getFiles()); 到目前为止返回 在此处输入图片说明

即使我的数据库文件中包含项目ID,我的files也没有填充文件。 我想我的错误在于注释中,但我不知道如何解决。

关系(默认情况下)在Doctrine中是延迟加载的。 含义:直到您访问它,才从数据库中获取它。

尝试遍历getFiles。 您将看到可以访问它们。

在学说中, fetch =“ EAGER”和fetch =“ LAZY”之间有什么区别,包括该最佳答案本身中进一步的链接以进一步解释该学说。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM