Ich habe Entität Project
und Files
. Ein Projekt kann mehrere Dateien enthalten und eine Datei gehört nur zu einem Projekt. Hier ist, wie meine BeziehungSymfony3 One-to-Many-Beziehung funktioniert nicht
In Files
Entity erfolgt
/**
* @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;
Hier ist, wie eine neue Datei nach hochgeladen wird erstellt
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();
}
Diese Funktion wird nach dem Flush in ProjectController
aufgerufen das Projekt (das gibt ID, die ich dann verwenden kann, um meine Datei zu erstellen). Hier ist der 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);
}
Nachdem alles eingestellt und getan habe ich ein Projekt und Dateien. In der Dateitabelle sehe ich, dass project_id
mit der ID des erstellten Projekts ist. Dann versuche ich aus dem Projekt alle Dateien mit files
Eigentum zu bekommen. In meinem Controller habe ich dump(project->getFiles());
die bisher gibt diese
Auch wenn ich in meiner Datenbank-Dateien haben, die die ID des Projekts haben meine files
nicht mit Dateien gefüllt ist. Ich nehme an, mein Fehler liegt in den Anmerkungen, aber ich habe keine Ahnung, wie ich das beheben kann.
Danke, es hat als Charme funktioniert. –