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.