2

doctrine 2 を zf2 に統合したいと考えています。私はこのチュートリアルに従います: http://www.jasongrimes.org/2012/01/using-doctrine-2-in-zend-framework-2/

しかし、doctrine cli にはいくつか問題があります。

「project\vendor\doctrine\doctrine-module\bin\doctrine-module orm:generate-proxies」と入力すると、「処理するメタデータ クラスがありません」というメッセージが表示されます。

これは私のmodule.config.phpファイルです:

return array(
'controllers' => array(
    'invokables' => array(
        'User\Controller\User' => 'User\Controller\UserController',
    ),
),
'view_manager' => array(
    'template_path_stack' => array(
        'user' => __DIR__ . '/../view',
    ),
),
'router' => array(
    'routes' => array(
        'user' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/user[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'User\Controller\User',
                    'action'     => 'userList',
                ),
            ),
        ),
    ),
),

// Doctrine config
'doctrine' => array(
    'driver' => array(
        __NAMESPACE__ . '_driver' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'cache' => 'array',
            'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
        ),
    'orm_default' => array(
            'drivers' => array(
                __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
            )
        )
    )
)
);

これは \User\src\Entity\Users.php です

namespace User\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\AnnotationRegistry;

/**
 * @ORM\Entity
 * @ORM\Table(name="user")
 * @property string $username
 * @property int $id
 */
class User
{
/**
 * @ORM\Id 
 * @ORM\GeneratedValue
 * @ORM\Column(type="integer")
 * @var int
 */
private $id;

/**
 * @ORM\Column(type="string")
 */
private $username;
}

注釈から ORM\ を削除すると、「クラス User\Entity\User の注釈 "@Entity" はインポートされませんでした」というメッセージが表示されます。この注釈に「use」ステートメントを追加するのを忘れたのではないでしょうか?

4

1 に答える 1

2

namespace User;の最初の行に入れますmodule.config.php__NAMESPACE__定数を使用するときに名前空間を定義する必要があります...

于 2012-10-22T21:40:05.880 に答える