3

PHP名前空間を使い始めたばかりです。別々のファイルに2つのモデルクラスがあります

両方のファイルで最初に名前空間を宣言します

名前空間eu\ed \ sixImport \ importViewer \ models;

ファーストクラス:

クラスLogは\Doctrine_Recordを拡張します

    $this->hasMany('eu\ed\sixImport\importViewer\models\DataSource as DataSource', array(
        'local' => 'id',
        'foreign' => 'logId'));//setup relationship in setUp method

2番目のクラス:

クラスDataSourceは\Doctrine_Recordを拡張します

    $this->hasOne('eu\ed\sixImport\importViewer\models\Log as Log', array(
        'local' => 'logId',
        'foreign' => 'id'));//setup relationship in setUp method

私がこのようなものを作るまで、すべてがうまくいきます

    $query = \Doctrine_Query::create()
        ->select('log.*')
        ->from('eu\ed\sixImport\importViewer\models\Log log')
        ->leftJoin("log.DataSource")
        ->orderBy("log.id DESC");

    $requiredPage = (($startingRow - ($startingRow%$rowsRequired))/$rowsRequired) + 1;
    $pager = new \Doctrine_Pager($query, $requiredPage, $rowsRequired);
    $res = $pager->execute();        
    $this->logsPageCount = $pager->getNumResults();
    print_r($res[0]["DataSource"]->toArray());//it fails on access to relationship

Doctrineが例外をスローするよりも例外がキャッチされませんでした'Doctrine_Exception'とメッセージ'Couldn't find class eu \ ed' in C:\ wamp \ www \ importViewer \ resources \ doctrine \ Doctrine-1.1.5 \ lib \ Doctrine \ Table.php:293 ..。。

例外から、クラス'eu\ed'を探していることがわかります。バックスラッシュはクラス名の残りの部分を切り取り、クラスよりも明らかに見つかりません。この問題を解決する方法について、いくつか提案をいただけますか?

ありがとう

4

1 に答える 1

0

Doctrine 1 が名前空間をサポートしているかどうかはわかりません。Doctrine 2 を使用することを強くお勧めします - これは成熟したアーキテクチャ (Java Hibernate の API を使用) の上に構築されており、Doctrine 1 のような多くの魔法は必要ありません。

于 2011-01-20T21:05:38.590 に答える