Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Empezando con Doctrine 2.2.1

Estas en el tema de Empezando con Doctrine 2.2.1 en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas chicos, A ver, me gustaria resolver varias dudas. No se como implementar mis modelos exactamente, tengo definidas las entidades pero no se como debo ...

  #31 (permalink)  
Antiguo 30/03/2012, 08:31
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Empezando con Doctrine 2.2.1

Buenas chicos,

A ver, me gustaria resolver varias dudas.

No se como implementar mis modelos exactamente, tengo definidas las entidades pero no se como debo implementar los modelos.

Me surgen preguntas como:
¿ que tipo de objetos debo de pasar a mis vistas ?
¿ es normal trabajar con estos objetos ( desde la opinion de un novato ) tan pesados ?
Quiero decir, para trabajar con un objeto de un registro, se crea el siguiente objeto:
Código:
object(Entidades\Categoria)[65]
  public 'id' => int 3
  public 'categoriapadre' => 
    object(DoctrineProxies\__CG__\Entidades\Categoria)[69]
      private '_entityPersister' => 
        object(Doctrine\ORM\Persisters\BasicEntityPersister)[58]
          protected '_class' => 
            object(Doctrine\ORM\Mapping\ClassMetadata)[25]
              ...
          protected '_conn' => 
            object(Doctrine\DBAL\Connection)[16]
              ...
          protected '_platform' => 
            object(Doctrine\DBAL\Platforms\MySqlPlatform)[18]
              ...
          protected '_em' => 
            object(Doctrine\ORM\EntityManager)[19]
              ...
          protected '_queuedInserts' => 
            array
              ...
          protected '_rsm' => 
            object(Doctrine\ORM\Query\ResultSetMapping)[60]
              ...
          protected '_columnTypes' => 
            array
              ...
          private '_insertSql' => null
          protected '_selectColumnListSql' => string 't0.id AS id1, t0.nombre AS nombre2, t0.urlrelativa AS urlrelativa3, t0.descripcion AS descripcion4, t0.visible AS visible5, t0.activo AS activo6, t0.fkidcategoria AS fkidcategoria7' (length=180)
          protected '_selectJoinSql' => string '' (length=0)
          protected '_sqlAliasCounter' => int 8
          protected '_sqlTableAliases' => 
            array
              ...
      private '_identifier' => 
        array
          'id' => string '2' (length=1)
      public '__isInitialized__' => boolean false
      public 'id' => null
      public 'categoriapadre' => null
      public 'categoriashijo' => 
        &object(Entidades\Categoria)[65]
      public 'productos' => null
      public 'nombre' => null
      public 'urlrelativa' => null
      public 'descripcion' => null
      public 'visible' => null
      public 'activo' => null
  public 'categoriashijo' => 
    object(Doctrine\ORM\PersistentCollection)[71]
      private 'snapshot' => 
        array
          empty
      private 'owner' => 
        &object(Entidades\Categoria)[65]
      private 'association' => 
        array
          'fieldName' => string 'categoriashijo' (length=14)
          'mappedBy' => string 'categoriapadre' (length=14)
          'targetEntity' => string 'Entidades\Categoria' (length=19)
          'cascade' => 
            array
              ...
          'orphanRemoval' => boolean false
          'fetch' => int 2
          'type' => int 4
          'inversedBy' => null
          'isOwningSide' => boolean false
          'sourceEntity' => string 'Entidades\Categoria' (length=19)
          'isCascadeRemove' => boolean false
          'isCascadePersist' => boolean false
          'isCascadeRefresh' => boolean false
          'isCascadeMerge' => boolean false
          'isCascadeDetach' => boolean false
      private 'em' => 
        object(Doctrine\ORM\EntityManager)[19]
          ...
      private 'backRefFieldName' => string 'categoriapadre' (length=14)
      private 'typeClass' => 
        object(Doctrine\ORM\Mapping\ClassMetadata)[25]
          public 'name' => string 'Entidades\Categoria' (length=19)
          public 'namespace' => string 'Entidades' (length=9)
          public 'rootEntityName' => string 'Entidades\Categoria' (length=19)
          public 'customRepositoryClassName' => null
          public 'isMappedSuperclass' => boolean false
          public 'parentClasses' => 
            array
              ...
          public 'subClasses' => 
            array
              ...
          public 'namedQueries' => 
            array
              ...
          public 'identifier' => 
            array
              ...
          public 'inheritanceType' => int 1
          public 'generatorType' => int 4
          public 'fieldMappings' => 
            array
              ...
          public 'fieldNames' => 
            array
              ...
          public 'columnNames' => 
            array
              ...
          public 'discriminatorValue' => null
          public 'discriminatorMap' => 
            array
              ...
          public 'discriminatorColumn' => null
          public 'table' => 
            array
              ...
          public 'lifecycleCallbacks' => 
            array
              ...
          public 'associationMappings' => 
            array
              ...
          public 'isIdentifierComposite' => boolean false
          public 'containsForeignIdentifier' => boolean false
          public 'idGenerator' => 
            object(Doctrine\ORM\Id\IdentityGenerator)[39]
              ...
          public 'sequenceGeneratorDefinition' => null
          public 'tableGeneratorDefinition' => null
          public 'changeTrackingPolicy' => int 1
          public 'isVersioned' => null
          public 'versionField' => null
          public 'reflClass' => 
            object(ReflectionClass)[38]
              ...
          public 'isReadOnly' => boolean false
          public 'reflFields' => 
            array
              ...
          private '_prototype' (Doctrine\ORM\Mapping\ClassMetadataInfo) => 
            object(Entidades\Categoria)[64]
              ...
      private 'isDirty' => boolean false
      private 'initialized' => boolean false
      private 'coll' => 
        object(Doctrine\Common\Collections\ArrayCollection)[68]
          private '_elements' => 
            array
              ...
  public 'productos' => 
    object(Doctrine\ORM\PersistentCollection)[100]
      private 'snapshot' => 
        array
          empty
      private 'owner' => 
        &object(Entidades\Categoria)[65]
      private 'association' => 
        array
          'fieldName' => string 'productos' (length=9)
          'mappedBy' => string 'categoria' (length=9)
          'targetEntity' => string 'Entidades\Producto' (length=18)
          'cascade' => 
            array
              ...
          'orphanRemoval' => boolean false
          'fetch' => int 2
          'type' => int 4
          'inversedBy' => null
          'isOwningSide' => boolean false
          'sourceEntity' => string 'Entidades\Categoria' (length=19)
          'isCascadeRemove' => boolean false
          'isCascadePersist' => boolean false
          'isCascadeRefresh' => boolean false
          'isCascadeMerge' => boolean false
          'isCascadeDetach' => boolean false
      private 'em' => 
        object(Doctrine\ORM\EntityManager)[19]
          ...
      private 'backRefFieldName' => string 'categoria' (length=9)
      private 'typeClass' => 
        object(Doctrine\ORM\Mapping\ClassMetadata)[67]
          ...
      private 'isDirty' => boolean false
      private 'initialized' => boolean false
      private 'coll' => 
        object(Doctrine\Common\Collections\ArrayCollection)[101]
          private '_elements' => 
            array
              ...
  public 'nombre' => string 'Comida húmeda' (length=13)
  public 'urlrelativa' => string 'comida-humeda' (length=13)
  public 'descripcion' => null
  public 'visible' => boolean false
  public 'activo' => boolean true
¿ como se suele trabajar ? ¿ como se hacen los modelos para trabajar con las entidades y repository ?
A las vistas se les pasa objetos entidad y repository o se les pasa el modelo ?

Hasta ahora lo que yo habia entendido es que el modelo era en si un registro asi trayendote de la base de datos un registro con un metodo del modelo de la forma
$modelo->load($id); luego podias cambiar alguna de sus propiedades $modelo->campo1 = 'texto'; y tenias un metodo guardar
$modelo->guardar(); que guardaba/actualizaba los datos de las propiedades del modelo en los campos de la DB.
$vista->modelo = $modelo;
Cuando querias traerte varios registros simplemente utilizabas el modelo y te traisas un array de modelos
$vista->arraymodelo = $modelo->findAll("where nombre ..." );

Pero ahora con las entidades/repositories y los modelos estoy un poco liado y no se como trabajar.

Etiquetas: doctrine, empezando, php
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 01:59.