3

我刚开始使用 PHP 命名空间。我在单独的文件中有两个模型类

在这两个文件中,我首先声明命名空间

命名空间 eu\ed\sixImport\importViewer\models;

头等舱:

类日志扩展 \Doctrine_Record

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

第二类:

类 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 在 C:\wamp\www\importViewer\resources\doctrine\Doctrine-1.1.5\lib\Doctrine\Table.php:293 中抛出异常未捕获异常 'Doctrine_Exception' 并带有消息 'Couldn't find class eu\ed' ...

从 Exception 中,您可以看到,它查找类 'eu\ed'。反斜杠[s] 剪切了类名的其余部分,并且没有明显找到类。你能给我一些建议,如何解决这个问题?

谢谢

4

1 回答 1

0

我不确定 Doctrine 1 是否支持命名空间。我真的推荐使用 Doctrine 2——它建立在成熟的架构之上(使用来自 Java Hibernate 的 API),并且不像 Doctrine 1 那样涉及那么多魔法。

于 2011-01-20T21:05:38.590 回答