を高く評価しているように、我々はいくつかのプロジェクトで同じものをやっています。
書き込みリポジトリを、代わりにDoctrine ORMとQueryBuilderを使用して、我々はちょうどPDO文とPDO接続を使用します。
私たちは、次の手順を行ってきました。
エンティティの代わりにモデルを作成します。すべてのモデルには、データの配列を受け取る "setFromDb()"関数があります。これらの情報は、モデルの属性と一致します。
サービス内では、コントローラはモデルでのみ作業しています。
私たちが書いたリポジトリは、サービスとして定義され、コンストラクタインジェクションとしてdoctrine接続を受け取るクラスです。それから、PDOとの接続と作業ができます。
リポジトリクラスの例(これらはデータベースクエリを処理し、彼らはsymfonyの/ドクトリンからリポジトリのクラスとは何の関係も持っていないので、我々はただのリポジトリにそれらを呼び出すことに注意してください)
class DemoRepositoryClass
{
private $connection;
public function __construct(Registry $doctrine)
{
// Get the database connection from doctrine
$this->connection = $doctrine->getConnection();
}
public function test()
{
$query = "SELECT * FROM XXX WHERE FOO = 'BAZ";
$stmt = $this->conncetion->prepare($query);
// [...] Do as always with PDO;
}
}
このクラスは次のようになりますservices.ymlそれと
app.demo_repository_class:
class: AppBundle\Path\DemoRepositoryClass
arguments: ['@doctrine']
public: true
でサービスとして定義され、あなたは一例として、コントローラからのサービス機能を呼び出すことができます。
// In a controller action/function
$this->get('app.demo_repository_class')->test();
これは良い処理方法のようですが、リポジトリとサービスの例を挙げることができますか?私は一般的にSymfonyにも新しかったと付け加えました。 –
接続部分はまだ少し漠然としています。 parameters.xmlファイルを使って接続を追加しようとしましたが、うまくいきませんでした。私のコントローラでは現在、 '$ conn = new PDO( 'odbc:DSN'、 'USER'、 'PASS');' –
を使用しています。プロジェクトでは、config内の接続をdoctrineで定義します。普通のPDOを使用している場合は、リポジトリクラスのコンストラクタ内で接続を定義して、接続データをパラメータを持つサービスに注入するだけです。だから、パラメータでホストなどを定義し、services.ymの '@dotrine'の部分の代わりにそれらを注入してください – KhorneHoly