0

ドクトリンでレコードを追加しようとすると、「メッセージ: クラス "Application_Model_MbsUsers" は有効なエンティティまたはマップされたスーパー クラスではありません」というエラー メッセージが表示されます。

これは私が使用したコードです

require APPLICATION_PATH . '/' . 'models/Application_Model_MbsUsers.php';
    $user = new Application_Model_MbsUsers;

    $user->setDisplayName( 'moahemd' );
    $user->setUserLogin( 'adminss' );
    $user->setUserPass( 'password' );
    $user->setUserActivationKey( 'aass' );
    $user->setUserRegistered( null );
    $user->setUserEmail( 'eng.sda@yahoo.com' );
    $user->setUserRole( 'admin' );

    $this->getRequest()->_em->persist( $user );
    $this->getRequest()->_em->flush();

モデル フォルダー 'application\models' にエンティティを配置します。

これは私のbootstarpコードです

protected function _initDoctrine()
{
    # doctrine loader
    require_once (APPLICATION_PATH .
            DIRECTORY_SEPARATOR . '..' .
            DIRECTORY_SEPARATOR . 'library' .
            DIRECTORY_SEPARATOR . 'Doctrine' .
            DIRECTORY_SEPARATOR . 'Common' .
            DIRECTORY_SEPARATOR . 'ClassLoader.php'
    );
    $doctrineAutoloader = new \Doctrine\Common\ClassLoader('Doctrine', APPLICATION_PATH .
    DIRECTORY_SEPARATOR . '..' .
    DIRECTORY_SEPARATOR . 'library'
    );
    $doctrineAutoloader->register();

    # configure doctrine
    $cache  = new Doctrine\Common\Cache\ArrayCache;
    $config = new Configuration;
    $config->setMetadataCacheImpl( $cache );

    echo APPLICATION_PATH . DIRECTORY_SEPARATOR . 'models';
    $driverImpl = $config->newDefaultAnnotationDriver( APPLICATION_PATH . DIRECTORY_SEPARATOR . 'models' );
    $config->setMetadataDriverImpl( $driverImpl );
    $config->setQueryCacheImpl( $cache );
    $config->setProxyDir( APPLICATION_PATH );
    $config->setProxyNamespace( 'Proxies' );
    $config->setAutoGenerateProxyClasses( TRUE );


    $this->_registry->doctrine      = new stdClass();
    $this->_registry->doctrine->_em = EntityManager::create( $this->_registry->config->application->doctrine->connection->toArray(), $config );


}

と私のエンティティ

Doctrine\ORM\Mapping を ORM として使用します。

/**
 * Application_Model_MbsUsers
 *
 * @ORM\Table(name="mbs_users")
 * @ORM\Entity
 */
class Application_Model_MbsUsers
{
/**
 * @var string
 *
 * @ORM\Column(name="user_login", type="string", length=64, nullable=false)
 */
private $userLogin;

/**
 * @var string
 *
 * @ORM\Column(name="user_pass", type="string", length=64, nullable=false)
 */
private $userPass;

.....

なぜこの問題が発生するのか疑問に思っています。ググって解決策が見つからないので、助けてください....

4

1 に答える 1

0

私はそれを解決します、問題はエンティティクラスの @ORM\ にありました、私はそれを削除しました、ありがとう

于 2013-01-16T08:39:26.523 に答える