Foros del Web » Programando para Internet » PHP » Zend »

Recursividad con doctrine

Estas en el tema de Recursividad con doctrine en el foro de Zend en Foros del Web. en mi modelo tengo esto Código PHP:      public function  setMenus ( AppModelsMenu $menus )     {          $this -> menus  =  $menus ;     }  son referencias a ...
  #1 (permalink)  
Antiguo 16/04/2013, 09:49
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Recursividad con doctrine

en mi modelo tengo esto
Código PHP:
    public function setMenus(AppModelsMenu $menus)
    {
        
$this->menus $menus;
    } 
son referencias a la mista tabla, tengo un array de objeto:
Código HTML:
    [1] => App\Models\Menu Object
        (
            [id:App\Models\Menu:private] => 2
            [menu:App\Models\Menu:private] => Registro
            [estado:App\Models\Menu:private] => A
            [fecha:App\Models\Menu:private] => DateTime Object
                (
                    [date] => 2013-04-12 13:12:31
                    [timezone_type] => 3
                    [timezone] => Europe/Berlin
                )

            [icono:App\Models\Menu:private] => 
            [orden:App\Models\Menu:private] => 0
            [menus:App\Models\Menu:private] => App\Models\Menu Object
                (
                    [id:App\Models\Menu:private] => 1
                    [menu:App\Models\Menu:private] => Gestión Documental
                    [estado:App\Models\Menu:private] => A
                    [fecha:App\Models\Menu:private] => DateTime Object
                        (
                            [date] => 2013-04-12 13:21:44
                            [timezone_type] => 3
                            [timezone] => Europe/Berlin
                        )

                    [icono:App\Models\Menu:private] => 
                    [orden:App\Models\Menu:private] => 0
                    [menus:App\Models\Menu:private] => 
                )

        )
La verdad no tengo idea de cómo haría mi recursividad para mi menú.

Ayuda por favor.
  #2 (permalink)  
Antiguo 16/04/2013, 10:41
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Recursividad con doctrine

Hay varias formas de hacerlo, dependiendo del caso puedes utilizar RecursiveIterator, pregunta, como estas generado la estructura del menú ?, recuerda que doctrine tiene extensiones para el manejo de las estructuras de arból https://github.com/l3pp4rd/DoctrineE...er/doc/tree.md

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 16/04/2013, 14:32
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: Recursividad con doctrine

mis anotaciones despues de arreglarlas quedarían asi:
Código PHP:
Ver original
  1. class Menu
  2. {
  3.     /**
  4.      * @var integer $id
  5.      *
  6.      * @Column(name="id", type="integer", nullable=false, unique=false)
  7.      * @Id
  8.      * @GeneratedValue(strategy="IDENTITY")
  9.      */
  10.     private $id;
  11.  
  12.     /**
  13.      * @var string $menu
  14.      *
  15.      * @Column(name="menu", type="string", length=30)
  16.      */
  17.     private $menu;
  18.  
  19.     /**
  20.      * @var App\Models\Menu
  21.      *
  22.      * @ManyToOne(targetEntity="Menu", inversedBy="parent_menu")
  23.      * @JoinColumn(name="menu_id", referencedColumnName="id", nullable=true)
  24.      */
  25.     private $menus;
  26.  
  27.     /**
  28.      * @OneToMany(targetEntity="Menu", mappedBy="menus")
  29.      */
  30.     private $parent_menu;
  31.  
  32.     public function __construct(){
  33.         $this->parent_menu = new ArrayCollection();
  34.     }
la extension de doctrine no llego a comprenderlo, por lo que intenté generarlo mediante este ejemplo http://wildlyinaccurate.com/simple-n...-in-doctrine-2, pero me vota este error:

Fatal error: Call to a member function getUnitOfWork() on a non-object in C:\xampp\htdocs\gdbcb\library\Doctrine\ORM\EntityR epository.php on line 170.

cómo integro la extensión Arbol de doctrine a mi proyecto?
  #4 (permalink)  
Antiguo 17/04/2013, 09:34
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: Recursividad con doctrine

pues pienso que logre integrar las extensiones a mi proyecto, cuando agrego los registros de ejemplo si me funcionan, pero cuando intento
Código PHP:
Ver original
  1. $repo = $em->getRepository('Entity\Category');
  2.  
  3. $food = $repo->findOneByTitle('Food');
  4. echo $repo->childCount($food);

me vota este error:

Fatal error: Call to a member function hasField() on a non-object in C:\xampp\htdocs\gdbcb\library\Doctrine\ORM\EntityR epository.php on line 214

asi es como integro en mi recurso:
Código PHP:
Ver original
  1. //Prueba Piloto Annotation driver (Extension Gedmo)
  2.     $chainDriverImpl = new \Doctrine\ORM\Mapping\Driver\DriverChain();
  3.     $yourDefaultDriverImpl = new \Doctrine\ORM\Mapping\Driver\YamlDriver('/yml/mapping/files'); // only an example
  4.     $translatableDriverImpl = $config->newDefaultAnnotationDriver(APPLICATION_PATH . "/../library/App/Gedmo/Translatable/Entity");
  5.     $chainDriverImpl->addDriver($yourDefaultDriverImpl, 'Entity');
  6.     $chainDriverImpl->addDriver($translatableDriverImpl, 'Gedmo\Translatable');
  7.     $config->setMetadataDriverImpl($chainDriverImpl);    
  8.    
  9.     $driverImpl = $config -> newDefaultAnnotationDriver(APPLICATION_PATH ."/../library/App/Models");
  10.        
  11.     $config -> setMetadataDriverImpl($driverImpl);
  12.     $config -> setQueryCacheImpl($cache);
  13.     $config -> setProxyDir($options['proxiesPath']);
  14.     $config -> setProxyNamespace($options['proxiesPathNamespace']);
  15.     $config -> setAutoGenerateProxyClasses(('development' == APPLICATION_ENV));
  16.     $em = Doctrine\ORM\EntityManager::create(
  17.         $this -> _buildConnectionOptions($options['connection']),
  18.         $config
  19.     );

alguna idea que que puede estar mal.

Etiquetas: doctrine, recursividad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.