Overview
このガイドでは、ように MongoDB 統合 と このフレームワークを使用して単純な PHP ウェブアプリケーションを構築する方法について説明します。 Symfoo を使用して MongoDB をデータベースとしてウェブ アプリケーションを構築し、MongoDB のクエリを簡素化するライブラリの使用をプラクティスすることの利点について読みとります。
Symfny は、 PHPアプリケーションを構築するための柔軟で高度に構成可能なフレームワークです。このフレームワークを使用して、 Webアプリ を効率化するための再利用可能なコンポーネントを作成できます。
Symbol アプリケーションで MongoDB を使用する理由
Symfny Web アプリケーションのデータストアとして MongoDB を使用すると、ドキュメント データモデルを活用して豊富なクエリ式を構築でき、データを簡単に操作できるようになります。 また、接続をカスタマイズして、複数のデータベースとコレクションとの間でデータを永続的にアクセスしたり、アクセスしたりすることもできます。
アプリケーションには、MongoDB および PHP の Object-Document マッパー(ODM)であるDotene MongoDB ODMを実装できます。 これにより、リレーショナル データベースに Dotene ORM と同じ原則を使用して、Community で MongoDB を操作する方法が提供されます。
Dotene ODM では、ビルダー API を使用して PHP オブジェクトを MongoDB ドキュメントにマッピングし、MongoDB でクエリを実行できます。 このマッピングにより、柔軟なスキーマ設計や高度な検索などの他の MongoDB 機能を使用できます。 このライブラリの詳細については、「リソース」セクションを参照してください。
クイック スタート チュートリアル
このチュートリアルでは、PHP フレームワークである Symfloy を使用して Web アプリケーションを構築する方法を説明します。 これには、MongoDB Atlas でホストされている MongoDB クラスターに接続し、データベースのデータにアクセスして表示する手順が含まれています。
Symfny Web アプリケーションのデータストアとして MongoDB を使用すると、ドキュメント データモデルを活用して豊富なクエリ式を構築でき、データを簡単に操作できるようになります。
Tip
Symfloy なしで MongoDB PHP ライブラリを使用して MongoDB に接続する場合は、MongoDB PHP ライブラリのドキュメントの「 MongoDBへの接続」を参照してください。
このガイドでは、Docs UDM を使用して、PHP オブジェクトを MongoDB ドキュメントにマッピングし、ビルダー API を使用して MongoDB をクエリできるようにします。
このガイドの手順に従って、MongoDB 配置に接続し、データベースに対してクエリを実行するサンプル Symfloy Web アプリケーションを作成します。
前提条件
クイック スタート アプリケーションを作成するには、開発環境に次のソフトウェアがインストールされている必要があります。
前提条件 | ノート |
|---|---|
PHPインストールにMongoDB拡張機能が含まれており、それが有効になっていることを確認します。バージョンの互換性を確認するには、互換性を参照してください。 | |
PHP用の依存関係マネージャー。 | |
Symbol アプリケーションを管理するためのコマンドライン ツール。互換性を確認するには、 シンボリック のドキュメントを参照してください。 | |
ターミナルアプリとシェル | MacOS ユーザーの場合は、 ターミナル または 類似アプリを使用します。Windowsユーザーの場合は、 PowerShell を使用します。 |
MongoDB Atlas クラスターの作成
MongoDB Atlas は、MongoDB配置をホストするマネージドクラウドデータベースサービスです。MongoDB配置がない場合は、「Atlasを使い始める」チュートリアルを完了することで、MongoDBクラスターを無料で作成できます(クレジットカードは不要)。このチュートリアルでは、このチュートリアルで使用されるデータを含む、サンプルデータセットをクラスターにロードする方法も説明します。
MongoDBクラスターに接続する場所と方法に関する指示をドライバーに提供するには、 接続stringを提供します。 接続 を取得するには、string ドキュメントの 「 クラスターへの接続 」Atlas チュートリアルの手順に従います。
Tip
接続stringを安全な場所に保存します。
PHP ドライバーと Dotene ODM のインストール
プロジェクト ディレクトリを入力し、MongoDB PHP ドライバーと Dotene ODM バンドルをアプリケーションに追加します。 バンドルは ODM ライブラリを Syncory に統合し、MongoDB からオブジェクトを読み取り、MongoDB にオブジェクトを書込むことができるようにします。 バンドルをインストールすると、ドライバーもプロジェクトに自動的に追加されます。 詳細については、このガイドの「リソース」セクションを参照してください。
ODM をインストールするには、次のコマンドを実行します。
composer require doctrine/mongodb-odm-bundle
Tip
上記のコマンドを実行すると、次のプロンプトが表示されます。
Do you want to execute this recipe?
ODM ライブラリをアプリケーションに追加するには、応答オプションからyesを選択します。
プロジェクトで Doctene ODM が有効になっていることを確認するには、 config/bundles.phpファイルに次のコードでハイライトされているエントリが含まれていることを確認します。
return [ // ... Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle::class => ['all' => true], ];
ODM の構成
config/packagesディレクトリで、 doctrine_mongodb.yamlファイルの内容を次のコードで置き換えます。
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
プロジェクト ファイルの変更
このセクションでは、 restaurantsプロジェクトのファイルを変更して、指定された条件に一致するレストランを表示する Symfloy ウェブ アプリケーションを作成する方法について説明します。
環境変数を設定する
ルート ディレクトリで、.env ファイルに移動し、接続stringとターゲット データベースを設定するための次の環境変数を定義します。
... MONGODB_URL=<your Atlas connection string> MONGODB_DB=sample_restaurants
接続文字列を検索するには、接続文字列を参照してください。
レストランエンティティとコントロールの作成
src/DocumentディレクトリにRestaurant.phpファイルを作成し、次のコードを貼り付けて、 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; }
次に、 src/ControllerディレクトリにRestaurantController.phpファイルを作成し、次のコードを貼り付けて、アプリケーション内のエンドポイントを処理します。
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]); } }
コントローラー ファイルは、ウェブ アプリのフロント ページにテキストを表示するindex()メソッドを定義します。 このファイルはbrowse()メソッドも定義しています。このメソッドは、 boroughフィールドが'Queens'で、かつnameフィールドに string 'Moon'が含まれているドキュメントを検索します。 次に、このメソッドは/restaurant/browse/ルートのドキュメントを表示します。 browse()メソッドはQueryBuilderクラスを使用してクエリを構築します。
テンプレートをカスタマイズします
次に、ウェブ アプリの出現をカスタマイズするためのテンプレートを作成します。
templates/restaurantディレクトリを作成し、次のファイルを入力します。
index.html.twigbrowse.html.twig
次のコードをindex.html.twigファイルに貼り付けます。
{# templates/restaurant/index.html.twig #} {% extends 'base.html.twig' %} {% block body %} <h1>Welcome to the Symfony MongoDB Quickstart!</h1> {% endblock %}
次のコードを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 %}
Symbol アプリケーションの起動
PHP 組み込みウェブ サーバーを起動するには、アプリケーション ルート ディレクトリから次のコマンドを実行します。
symfony server:start
サーバーが起動すると、次のメッセージが出力されます。
[OK] Web server listening The Web server is using PHP FPM 8.3.4 http://127.0.0.1:8000
ウェブ ブラウザでURL http://:127.0.0.1 8000/restaurant/browse を開きます。ページには、次のスクリーンショットに示すように、レストランのリストとそれぞれに関する詳細が表示されています。

クイック スタート チュートリアルが完了しました。
これらの手順を完了すると、MongoDB 配置に接続し、サンプル データに対してクエリを実行し、検索した結果をレンダリングする Symfone Web アプリケーションが作成されます。
このチュートリアルに関するフィードバックを提供したい場合は、MongoDBフィードバック ポータルにアクセスしてください。
リソース
Symfloy と MongoDB の詳細については、次のリソースを表示してください。