I have entity Project
and Files
. One project can have multiple files and one file belongs only to one project. Here is how my relationship is done
In Files
Entity
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Project", inversedBy="files")
* @ORM\JoinColumn(name="project_id", referencedColumnName="id")
*/
private $project;
In Project
Entity:
/**
* @var ArrayCollection
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Files", mappedBy="project")
*/
private $files;
Here is how a new File is created after being uploaded
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();
}
This function is called in ProjectController
after flushing the project (which gives it ID which then I can use to create my file). Here is the code
$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);
}
After everything is set and done I have a project and files. In files table I see that project_id
is with the id of the created project. Then I try to get from the project all files using files
property. In my controller I have dump(project->getFiles());
which so far returns this
Even though I have in my database files which have the id of the project my files
is not filled with files. I suppose my mistake is in the annotations, but I have no idea how to fix this.