Cet article a été rédigé par Andreas Braun.
Dans la première partie de cette série, nous avons conçu un schéma pour stocker les prix du carburant dans MongoDB et importé une grande quantité de données dans la base de données. Nous avons également examiné comment agréger efficacement ces données à l'aide du cadre d'agrégation de MongoDB. Une fois la base de données préparée, il est maintenant temps de créer une application Symfony qui nous permet d'interagir avec ces données. Dans cette partie du didacticiel, nous utiliserons l'ODM Doctrine MongoDB pour mapper nos documents aux classes PHP et Symfony UX pour créer une interface moderne.
Pour récapituler, voici ce que nous souhaitons que notre application fasse :
Tout d’abord, nous avons configuré notre application Symfony à l’aide de la CLI Symfony. Si vous ne l'avez pas encore installé, vous pouvez trouver des instructions sur le site Web de Symfony. Une fois la CLI installée, créez un nouveau projet Symfony :
symfony nouveau --webapp carburant-prix-appCela crée une nouvelle application Web avec la dernière version de Symfony. Puisque nous n'avons pas besoin de l'ORM Doctrine, nous pouvons supprimer un certain nombre de packages de composer.json :
composer supprimer doctrine/dbal doctrine/doctrine-bundle doctrine/doctrine-migrations-bundle doctrine/orm symfony/doctrine-messengerMaintenant, assurez-vous que l'extension MongoDB est installée et activée. Si vous ne l'avez pas encore installé, installez-le en utilisant pie :
tarte installer mongodb/mongodb-extension : ^ 2.1Nous sommes maintenant prêts à installer le bundle Doctrine MongoDB ODM. Ce bundle permet une configuration facile de l'ODM Doctrine MongoDB et fournit un ensemble d'outils pour travailler avec MongoDB dans les applications Symfony. Pour installer le bundle, exécutez la commande suivante dans le répertoire de votre projet :
le compositeur nécessite une doctrine/mongodb-odm-bundleÀ l'aide de Symfony Flex, cette commande configure tout ce dont vous avez besoin pour vous connecter à MongoDB. Vous pouvez vérifier la configuration par défaut dansconfig/packages/doctrine_mongodb.yaml. Pour vous connecter à votre base de données, mettez à jour leMONGODB_URLvariable d'environnement dans votre.envdéposer.
Le premier document que nous cartographierons sont les données de la station. Créer un nouveauDocument\Stationclass et ajoutez des champs pour tout ce que nous devons stocker :
?php declare(strict_types=1); namespace App\Document; use App\Document\Partial\AbstractStation; use App\Repository\StationRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ODM\MongoDB\Mapping\Annotations\Document; use Doctrine\ODM\MongoDB\Mapping\Annotations\EmbedOne; use Doctrine\ODM\MongoDB\Mapping\Annotations\Field; use Doctrine\ODM\MongoDB\Mapping\Annotations\Id; use Doctrine\ODM\MongoDB\Mapping\Annotations\Index; use GeoJson\Geometry\Point; use Symfony\Component\Uid\Uuid; use Symfony\Component\Uid\UuidV4; #[Document(repositoryClass: StationRepository::class)] #[Index(keys: ['location' ='2dsphere'])] class Station { #[Id(type : 'uuid', stratégie : 'none')] public readonly Uuid $id; #[Champ] chaîne publique $name ; #[Champ] chaîne publique $marque ; #[Field(type: 'point')...
[Courte citation de 8% de l'article original]