Table des matières

DokuMission

Contexte

Développement

Le but de cette application est de permettre à une entreprise de gérer une documentation en ligne, permettant à ses salariés de créer, modifier ou supprimer des éléments de cette documentation. Elle sera accessible en lecture par tout le monde en tant qu'utilisateur.

Outils

Langages

MVC

Modèles

Il m'a fallut utiliser 3 classes métier pour la fonction de recherche :

  1. Un document comporte une ou plusieurs parties.
  2. Une partie se situe dans un et un seul document.
  3. Une partie a une et une seule version.
  4. Une version peut être associée à une ou plusieurs parties.

Contrôleurs

Cette fonction se trouve dans Documents :

Méthode Descriptif
Index Fonction appelée par défaut.
Refresh Initialisation des outils qui vont être utilisés lors du chargement de la page.
Recherche Permet de rechercher dans la base, en fonction de ce qui a été sélectionné, un titre ou le contenu d'une partie.

Vue

La vue utilisée ici est la vue “v_search” :

Exemple de recherche sur les titres :

 

Exemple de recherche sur les contenus :

On rentre ce que l'on recherche dans la zone de texte, et on coche si oui ou non on veut chercher dans le contenu du document. Il suffit juste ensuite de lancer la recherche.

Requêtes doctrine

Voici les requêtes de doctrines utilisées dans cette fonction :

Exemple d'un select :

<?php
//Création de la requête de sélection
$query = $this->doctrine->em->createQuery("SELECT d FROM document d");	
//Récupération des résultats de la sélection
$doc = $query->getResult();
 

Requête de recherche dans les titres :

<?php
//Création de la requête de sélection
$titres = $this->doctrine->em->createQuery("SELECT d FROM document d WHERE d.titre LIKE '%$titre%'");
//Exécution de la requête.
$research = $titres->execute();
 

Requête de recherche dans les contenus

<?php
//Création de la requête de sélection
$contenu = $this->doctrine->em->createQuery("SELECT p
					              	         FROM partie p
						       	             JOIN p.version v
						     	             JOIN v.document d
						     	             WHERE p.contenu LIKE '%$titre%'");
//Exécution de la requête.
$search = $contenu->execute();