Bonjour,

Voila je rencontre un petit problème avec ma réflexion

Je cherche à créer un FileManager

J'aimerais représenter en base de donnée l'architecture des dossier pour ensuite donnée la possibilitée de partager, donner le droit sur un dossier ou fichier au utilisateur par une administration.

J'utilise l'extension nested set de doctrine mais je suis confronter à un problème pour créer mes deux entitée Folder et File.
J'ai créer une entitée Folder avec comme enfant File mais je me suis rendu compte que je ne pourrais donc pas avoir comme enfant un type Folder.
Voici l'entitée Folder :

<?php

namespace FilesManagerBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Folder
 *
 * @ORM\Entity
 * @ORM\Table(name="folder")
 * @Gedmo\Tree(type="nested")
 * @ORM\Entity(repositoryClass="FilesManagerBundle\Entity\Repository\FolderRepository")
 */
class Folder
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

     /**
     * @var string $name
     * @ORM\Column(name="title", type="string", length=255, nullable=false)
     */
    private $name;

    /**
     * @var text $description
     * @ORM\Column(name="description", type="text", nullable=true)
     */
    private $description;

    /**
     * @var text $path
     * @ORM\Column(name="path", type="string")
     * @Gedmo\UploadableFilePath
     */
    private $path;

    /**
     * @Gedmo\TreeLeft
     * @ORM\Column(name="`left`", type="integer", nullable=true)
     */
    private $left;

    /**
     * @Gedmo\TreeLevel
     * @ORM\Column(name="`level`", type="integer", nullable=true)
     */
    private $level;

    /**
     * @Gedmo\TreeRight
     * @ORM\Column(name="`right`", type="integer", nullable=true)
     */
    private $right;

    /**
     * @Gedmo\TreeRoot
     * @ORM\ManyToOne(targetEntity="Folder")
     * @ORM\JoinColumn(referencedColumnName="id", onDelete="CASCADE")
     */
    private $root;

    /**
     * @Gedmo\TreeParent
     * @ORM\ManyToOne(targetEntity="Folder", inversedBy="childrens", cascade={"persist"}, fetch="LAZY")
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL")
     */
    private $parent;

    /**
     * @ORM\OneToMany(targetEntity="Folder", mappedBy="parent", cascade={"all"}, fetch="LAZY")
     * @ORM\OrderBy({"left" = "ASC"})
     */
    private $childrens;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->childrens = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // etc... getter et setter

voici mon entitée file

<?php

namespace FilesManagerBundle\Entity;

use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use FilesManagerBundle\Entity\Folder;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * File
 *
 * @Gedmo\Uploadable(allowOverwrite=true)
 * @ORM\Entity
 * @ORM\Table(name="file")
 */
class File
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

        /**
     * @ORM\Column
     * @Gedmo\UploadableFilePath
     */
    private $path;

    /**
     * @ORM\Column
     * @Gedmo\UploadableFileName
     */
    private $name;

    /**
     * @ORM\Column
     * @Gedmo\UploadableFileMimeType
     */
    private $mimeType;

    /**
     * @ORM\Column(type="decimal")
     * @Gedmo\UploadableFileSize
     */
    private $size;

    /**
    * @ORM\ManyToOne(targetEntity="FilesManagerBundle\Entity\Folder")
    * @ORM\JoinColumn(nullable=false)
    */
    private $folder;

    /**
     * @Assert\NotBlank()
     */
    private $file;

Est ce que quelqu'un aurai une idée pour réussir à bien organiser mes entitée pour réussir mon objectif.

En vous remerciant d'avance

Aucune réponse