Visão geral
Neste guia, você aprenderá sobre a integração do Symfony com o MongoDB e como usar essa estrutura para criar um aplicação web PHP simples. Você pode ler sobre os benefícios de usar o Symfony para construir aplicativos da web com o MongoDB como seu banco de dados de dados e prática de uso de bibliotecas que simplificam a consulta do MongoDB.
Symfony é uma estrutura flexível e altamente configurável para construir aplicativos PHP. Você pode usar essa estrutura para criar componentes reutilizáveis para simplificar seu aplicativo da web.
Por que usar MongoDB em um aplicativo Symfony?
Ao usar o MongoDB como um armazenamento de dados em um aplicação web Symfony, você pode aproveitar o modelo de dados do documento para criar expressões de query ricas, permitindo que você interaja facilmente com os dados. Você também pode personalizar suas conexões para persistir e acessar dados de e para vários bancos de dados e collections.
Em seus aplicativos, você pode implementar o Doctrine MongoDB ODM, que é um mapeador de documentos de objetos (ODM) para MongoDB e PHP. Ele fornece uma maneira de trabalhar com o MongoDB no Symfony, usando os mesmos princípios do Doctrine ORM para bancos de dados relacionais.
O Doctrine ODM permite mapear objetos PHP para documentos do MongoDB e consultar o MongoDB usando uma API de construtor. Esse mapeamento permite que você use outros recursos do MongoDB , como design de esquema flexível e pesquisas avançadas. Para saber mais sobre esta biblioteca, consulte a seção Recursos .
Tutorial de início rápido
Este tutorial mostra como construir um aplicação da web usando Symfony, uma estrutura PHP. Ele inclui instruções sobre como se conectar a um cluster MongoDB hospedado no MongoDB Atlas e acessar e exibir dados de seu banco de dados de dados.
Ao usar o MongoDB como um armazenamento de dados em um aplicação web Symfony, você pode aproveitar o modelo de dados do documento para criar expressões de query ricas, permitindo que você interaja facilmente com os dados.
Dica
Se você preferir se conectar ao MongoDB usando a Biblioteca PHP do MongoDB sem Symfony, consulte Conectando-se ao MongoDB na documentação da Biblioteca PHP do MongoDB .
Este guia usa o Doctrine ODM para permitir que você mapeie objetos PHP para documentos do MongoDB e consulte o MongoDB usando uma API de construtor.
Siga as etapas deste guia para criar um exemplo de aplicação web Symfony que se conecta a um sistema MongoDB e executa uma query no banco de banco de dados.
Pré-requisitos
Para criar o aplicativo Quick Start, você precisa do seguinte software instalado em seu ambiente de desenvolvimento:
Pré-requisitos | Notas |
|---|---|
Certifique-se de que sua instalação do PHP inclua a extensão MongoDB e que ela esteja habilitada. Para confirmar a compatibilidade da versão, consulte Compatibilidade. | |
Gerenciador de dependências para PHP. | |
Ferramenta de linha de comando para gerenciar aplicativos Symfony. Para confirmar a compatibilidade,consulte a documentação do Symfony. | |
Um aplicativo de terminal e shell | Para usuários do MacOS, use o Terminal ou um aplicativo semelhante. Para usuários do Windows, use o PowerShell. |
Criar um cluster MongoDB Atlas
O MongoDB Atlas é um serviço de banco de dados de nuvem totalmente gerenciado que hospeda suas implementações do MongoDB . Se você não tiver um sistema MongoDB , você poderá criar um cluster MongoDB gratuitamente (nenhum cartão de crédito necessário) concluindo o tutorial Introdução ao Atlas . Este tutorial também demonstra como carregar conjuntos de dados de exemplo em seu cluster, incluindo os dados usados neste tutorial.
Você fornece instruções ao driver sobre onde e como se conectar ao cluster MongoDB fornecendo a ele uma string de conexão. Para recuperar a string de conexão, siga as instruções no tutorial Conectar ao Cluster na documentação do Atlas .
Dica
Salve sua string de conexão em um local seguro.
Instale o Driver PHP e o Doctrine ODM
Insira o diretório do projeto e, em seguida, adicione o driver MongoDB PHP e o pacote Doctrine ODM ao seu aplicação. O pacote integra a biblioteca ODM ao Symfony para que você possa ler e escrever objetos no MongoDB. A instalação do pacote também adiciona automaticamente o driver ao seu projeto. Para saber mais, consulte a seção Recursos deste guia.
Execute os seguintes comandos para instalar o ODM:
composer require doctrine/mongodb-odm-bundle
Dica
Depois de executar os comandos anteriores, você poderá ver o seguinte prompt:
Do you want to execute this recipe?
Selecione yes nas opções de resposta para adicionar a biblioteca ODM ao seu aplicação.
Para garantir que o Doctrine ODM esteja ativado em seu projeto, verifique se o arquivo config/bundles.php contém a entrada destacada no código a seguir:
return [ // ... Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle::class => ['all' => true], ];
Configure o ODM
No diretório config/packages , substitua o conteúdo do seu arquivo doctrine_mongodb.yaml pelo seguinte código:
doctrine_mongodb: auto_generate_proxy_classes: true auto_generate_hydrator_classes: true connections: default: server: "%env(resolve:MONGODB_URL)%" default_database: "%env(resolve:MONGODB_DB)%" document_managers: default: auto_mapping: true mappings: App: dir: "%kernel.project_dir%/src/Document" mapping: true type: attribute prefix: 'App\Document' is_bundle: false alias: App
Instalar dependência frontend
Este projeto utiliza o twig, o mecanismo de modelo padrão para Symfony, para gerar modelos neste aplicação. Execute o seguinte comando para instalar o pacote twig :
composer require symfony/twig-bundle
Observação
Essa etapa pode resultar em uma mensagem de erro sobre a desconfiguração de variáveis de ambiente, mas esse problema é resolvido nas etapas a seguir.
Modificar arquivos do projeto
Esta seção demonstra como modificar os arquivos em seu projeto do restaurants para criar um aplicação web Symfony que exibe restaurantes que correspondem aos critérios especificados.
Definir variáveis de ambiente
No diretório raiz, navegue até o arquivo .env e defina as seguintes variáveis de ambiente para definir sua string de conexão e banco de banco de dados de destino:
... MONGODB_URL=<your Atlas connection string> MONGODB_DB=sample_restaurants
Para recuperar a string de conexão, consulte Cadeias de conexão.
Criar Entidade e Controlador de Restaurante
Crie o arquivo Restaurant.php no diretório src/Document e cole o seguinte código para criar uma entidade que representa documentos na coleção restaurants :
declare(strict_types=1); namespace App\Document; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM; #[ODM\Document(collection: 'restaurants')] class Restaurant { #[ODM\Id] public ?string $id = null; #[ODM\Field] public string $name; #[ODM\Field] public string $borough; #[ODM\Field] public string $cuisine; }
Em seguida, crie o arquivo RestaurantController.php no diretório src/Controller e cole o seguinte código para manipular os pontos de conexão em seu aplicação:
declare(strict_types=1); namespace App\Controller; use App\Document\Restaurant; use Doctrine\ODM\MongoDB\DocumentManager; use MongoDB\BSON\Regex; use Psr\Log\LoggerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class RestaurantController extends AbstractController { private DocumentManager $dm; private LoggerInterface $logger; public function __construct(DocumentManager $dm, LoggerInterface $logger) { $this->dm = $dm; $this->logger = $logger; } ('/', name: 'restaurant_index', methods: ['GET']) public function index(Request $request): Response { return $this->render('restaurant/index.html.twig'); } ('/restaurant/browse', name: 'restaurant_browse', methods: ['GET']) public function browse(Request $request): Response { $restaurantRepository = $this->dm->getRepository(Restaurant::class); $queryBuilder = $restaurantRepository->createQueryBuilder(); $restaurants = $queryBuilder ->field('borough')->equals('Queens') ->field('name')->equals(new Regex('Moon', 'i')) ->getQuery() ->execute(); return $this->render('restaurant/browse.html.twig', ['restaurants' => $restaurants]); } }
O arquivo do controlador define o método index() , que exibe o texto na página inicial do aplicativo da web. O arquivo também define o método browse() , que localiza documentos nos quais o campo borough é 'Queens' e o campo name contém a string 'Moon'. Esse método exibe os documentos na rota /restaurant/browse/ . O método browse() utiliza a classe QueryBuilder para construir a query.
Personalizar modelos
Em seguida, crie modelos para personalizar a aparência do aplicativo da web.
Crie o diretório templates/restaurant e preencha-o com os seguintes arquivos:
index.html.twigbrowse.html.twig
Cole o código abaixo no arquivo index.html.twig :
{# templates/restaurant/index.html.twig #} {% extends 'base.html.twig' %} {% block body %} <h1>Welcome to the Symfony MongoDB Quickstart!</h1> {% endblock %}
Cole o código abaixo no arquivo browse.html.twig :
{# templates/restaurant/browse.html.twig #} {% extends 'base.html.twig' %} {% block title %} Search Restaurants {% endblock %} {% block body %} <h1>Search Restaurants</h1> {% for restaurant in restaurants %} <p> <span style="color:deeppink;"><b>Name: </b>{{ restaurant.name }}</span><br> <b>Borough:</b> {{ restaurant.borough }}<br> <b>Cuisine:</b> {{ restaurant.cuisine }}<br> </p> {% endfor %} {% endblock %}
Inicie seu aplicativo Symfony
Execute o seguinte comando a partir do diretório raiz do aplicativo para iniciar seu servidor da web integrado no PHP:
symfony server:start
Após o servidor iniciar, ele gera a seguinte mensagem:
[OK] Web server listening The Web server is using PHP FPM 8.3.4 http://127.0.0.1:8000
Abra a URL http://127.0.0.1:8000/restaurant/browse em seu navegador da web. A página mostra uma lista de restaurantes e detalhes sobre cada um deles, conforme exibido na seguinte captura de tela:

Parabéns por concluir o tutorial de início rápido!
Depois de concluir essas etapas, você tem um aplicação web do Symfony que se conecta à implementação do MongoDB , executa uma query nos dados de amostra e renderiza um resultado recuperado.
Se você quiser fornecer comentários sobre este tutorial, visite o Portal de comentários do MongoDB .
Recursos
Saiba mais sobre Symfony e MongoDB visualizando os seguintes recursos: