1

エンティティに関連付けられたカスタム リポジトリにデフォルトの DBAL 接続を挿入しようとしているので、生の SQL クエリを実行できます。

services.mxl 内

<service id="acme.repository.document" class="Acme\Bundle\Repository\DocumentRepository">
      <argument type="service" id="doctrine.orm.entity_manager" />
      <argument>Acme\Bundle\Entity\Document</argument>
      <argument type="service" id="database_connection" />
</service>

私のリポジトリクラス DocumentRepository.php で

class DocumentRepository extends EntityRepository {

    protected $conn;

    public function __construct($em, $class, Connection $conn)
    {
        $this->conn = $conn;
         parent::__construct($em,$class);
    }

しかし、私はこのエラーが発生します:

Catchable Fatal Error: Argument 3 passed to Acme\Bundle\Repository\DocumentRepository::__construct() must be an instance of Doctrine\DBAL\Connection, none given, called in /project/vendor/doctrine/orm/lib/Doctrine/ORM /EntityManager.php 689 行目および /project/src/Acme/Bundle/Repository/DocumentRepository.php 18 行目で定義

あなたは私を助けることができます?

4

4 に答える 4

2

EntityRepository クラスの $_em 属性から接続に到達できるので、その方法を次に示します。

$connection = $this->_em->getConnection();
于 2016-08-19T14:54:12.650 に答える
0

EntityRepositoryDoctrine では ORMは内部的に構築されています。リポジトリにもなる独自のサービスを定義して、それを使用することもできます。Doctrine はサービスの場所や依存性注入コンテナーを内部的に使用しないため、これは ORM の制限です。

于 2013-02-08T20:17:28.260 に答える
-1

問題は、Connectionの正しいインスタンスを渡していないことです。これを試してください:

use Doctrine\DBAL\DriverManager;

class DocumentRepository extends EntityRepository 
{

    protected $conn;

    public function __construct($em, $class)
    {
        $this->conn = $this->myHandleConnection();
         parent::__construct($em,$class);
    }

    public function myHandleConnection()
    {
        $config = new \Doctrine\DBAL\Configuration();
        $connectionParams = array(
                'dbname' => 'MY_DB',
                'user' => 'root',
                'password' => 'root',
                'host' => 'localhost',
                'driver' => 'pdo_mysql',
                'charset' => 'utf8',
                );
        $conn = DriverManager::getConnection($connectionParams, $config);
        return $conn;
    }
}
于 2013-03-14T15:04:53.303 に答える