我有实体Project
和Files
。一个项目可以有多个文件,一个文件只属于一个项目。以下是我的关系如何完成
在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,然后我可以使用它来创建我的文件)。这是代码
$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
也没有填充文件。我想我的错误在于注释,但我不知道如何解决这个问题。