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:
¿ como se suele trabajar ? ¿ como se hacen los modelos para trabajar con las entidades y repository ?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
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.