Le manager de LyssalStructureBundle
peut servir de base à tous vos manager. Il définit différentes méthodes.
Vous pouvez simplement créer votre manager comme ceci :
use Lyssal\StructureBundle\Manager\Manager;
/**
* Manager de mon entité.
*/
class EntiteManager extends Manager
{
}
Mais si vous souhaitez utiliser le manager de LyssalStructureBundle
(%lyssal.manager.class%
) sans rien modifier, vous pouvez juste créer votre service ainsi :
<service id="acme.mon_bundle.manager.mon_entite" class="%lyssal.manager.class%">
<argument type="service" id="doctrine.orm.entity_manager" />
<argument>%acme.mon_bundle.entity.mon_entite.class%</argument>
</service>
En utilisant %lyssal.manager.class%
, vous n'avez donc pas besoin de créer de classe pour votre manager.
Retourne un tableau d'entités :
findBy(array $conditions, array $orderBy = null, $limit = null, $offset = null, $extras = array())
Retourne un tableau d'entités en utilisant des %LIKE% :
findLikeBy(array $conditions, array $orderBy = null, $limit = null, $offset = null)
Retourne une entité :
findOneBy(array $conditions)
Retourne une entité avec son identifiant :
findOneById($id)
Retourne toutes les entités :
findAll()
Retourne des entités indexées par leur identifiant :
findByKeyedById(array $conditions, array $orderBy = null, $limit = null, $offset = null, $extras = array())
Retourne des entités en effectuant une recherche avec des "%LIKE%" indexées par leur identifiant :
findLikeByKeyedById(array $conditions, array $orderBy = null, $limit = null, $offset = null)
Retourne toutes les entités indexées par leur identifiant :
findAllKeyedById()
Retourne un tableau d'entités indexés par leur identifiant :
getEntitiesKeyedById(array $entities)
Retourne le PagerFanta pour la méthode findBy() :
getPagerFantaFindBy(array $conditions = array(), array $orderBy = null, $nombreResultatsParPage = 20, $currentPage = 1, array $extras = array())
Retourne le nombre de lignes en base :
count()
Crée une nouvelle entité :
create()
Enregistre une ou plusieurs entités :
save($entites)
Persiste une ou plusieurs entités :
persist($entites)
Flush :
flush()
Détache tous les objets :
clear()
Supprime une ou plusieurs entités :
remove($entites)
Supprime toutes les entités :
removeAll($initAutoIncrement)
Vérifie si une entité existe :
exists($entity)
Effectue un TRUNCATE sur la table :
truncate($initAutoIncrement)
Spécifie le nouveau AUTO_INCREMENT de l'identifiant de la table à 1 :
initAutoIncrement()
Spécifie le nouveau AUTO_INCREMENT de l'identifiant de la table :
setAutoIncrement($initAutoIncrement)
Retourne le nom de la table en base de données :
getTableName()
Retourne le nom des identifiants de l'entité :
getIdentifier()
Retourne si l'entité gérée possède un champ :
hasField($fieldName)
Retourne si l'entité gérée possède une association :
hasAssociation($fieldName)
LyssalStructureBundle
étend fortement ce paramètre pour multiplier les usages sans avoir à écrire manuellement une requête. Mais ce paramètre peut également être utilisé de manière classique tel qu'il est utilisé avec Doctrine
.
Exemple d'utilisation de $conditions
pour le manager (fictif) VilleManager
:
// (genre = $genre OR genreParent = $genre) AND genre.nom LIKE '%tratégi%'
$conditions = array
(
EntityRepository::OR_WHERE => array
(
'genre' => $genre,
'genreParent' => $genre
),
EntityRepository::WHERE_LIKE => array
(
'genre.nom' => '%tratégi%'
)
);
// (genre.nom LIKE '%tratégi%' OR genre.nom LIKE '%éflexio%')
$conditions = array
(
EntityRepository::OR_WHERE => array
(
array(EntityRepository::WHERE_LIKE => array('genre.nom' => '%tratégi%')),
array(EntityRepository::WHERE_LIKE => array('genre.nom' => '%éflexio%'))
)
);
Les possibilités pour $conditions
sont :
EntityRepository::OR_WHERE
: Pour des (x OR y OR ...)EntityRepository::AND_WHERE
: Pour des (x AND y AND ...)EntityRepository::WHERE_LIKE
: Pour des (x LIKE y)EntityRepository::WHERE_IN
: Pour des (x IN (y1, y2...))EntityRepository::WHERE_NULL
: Pour des (x IS NULL)EntityRepository::WHERE_NOT_NULL
: Pour des (x IS NOT NULL)EntityRepository::WHERE_EQUAL
: Pour des x = yEntityRepository::WHERE_LESS
: Pour des x < yEntityRepository::WHERE_LESS_OR_EQUAL
: Pour des x <= yEntityRepository::WHERE_GREATER
: Pour des x > yEntityRepository::WHERE_GREATER_OR_EQUAL
: Pour des x >= y ou pour les HAVING :EntityRepository::OR_HAVING
EntityRepository::AND_HAVING
EntityRepository::HAVING_EQUAL
EntityRepository::HAVING_LESS
EntityRepository::HAVING_LESS_OR_EQUAL
EntityRepository::HAVING_GREATER
EntityRepository::HAVING_GREATER_OR_EQUAL
Exemple d'utilisation de $extras
pour le manager (fictif) VilleManager
:
$extras = array
(
EntityRepository::INNER_JOINS => array
(
'ville.maison' => 'maison'
),
EntityRepository::SELECTS => array
(
'maison' => EntityRepository::SELECT_JOIN
)
);
Les possibilités pour $extras
sont :
EntityRepository::SELECTS
: Met à jour l'entité avec une jointure avec EntityRepository::SELECT_JOIN comme valeur (cf. Exemple ci-dessus) ou sinon ajoute une valeur à remonter.EntityRepository::LEFT_JOINS
EntityRepository::INNER_JOINS
EntityRepository::GROUP_BYS