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」ステートメントを追加するのを忘れたのではないでしょうか?