2016-10-22 11 views
2

私は教義2.5.4と純粋なPHP 5ドクトリン2注釈問題

これでmy CMS(GOOGLEリンク)と私自身のCMSを書いています。 MySQLでは

<?php 
use Doctrine\ORM\Mapping AS ORM; 
/** 
* @ORM\Entity 
* @ORM\Table(name="Rich_news") 
*/ 
class News{ 

/** 
* @nid 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue  
*/ 
public $id; 
/** @author @ORM\Column(type="string")*/ 
public $author; 
/** @date @ORM\Column(type="integer")*/ 
public $date; 
/** @title @ORM\Column(type="string")*/ 
public $title; 
/**@content @ORM\Column(type="string")*/ 
public $content; 
/**@full @ORM\Column(type="string")*/ 
public $full; 
/**@title_en @ORM\Column(type="string")*/ 
public $title_en; 
/**@content_en @ORM\Column(type="string")*/ 
public $content_en; 
/**@full_en @ORM\Column(type="string")*/ 
public $full_en; 
/**@flink @ORM\Column(type="string")*/ 
public $flink; 
/**@img @ORM\Column(type="string")*/ 
public $img;  
} 
?> 

マイテーブルRich_news

ERROR NewsDAO: exception 'Doctrine\ORM\Mapping\MappingException' with message 'Class "News" is not a valid entity or mapped super class.' in /var/www/html/xxxxx.com/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:346 Stack trace: #0 /var/www/html/xxxxx.com/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php(91): Doctrine\ORM\Mapping\MappingException::classIsNotAValidEntityOrMappedSuperClass('News') #1 /var/www/html/xxxxx.com/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(151): Doctrine\ORM\Mapping\Driver\AnnotationDriver->loadMetadataForClass('News', Object(Doctrine\ORM\Mapping\ClassMetadata)) #2 /var/www/html/xxxxx.com/public_html/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(332): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array) #3 /var/www/html/xxxxx.com/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(78): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('News') #4 /var/www/html/xxxxx.com/public_html/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(216): Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata('News') #5 /var/www/html/xxxxx.com/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(281): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('News') #6 /var/www/html/xxxxx.com/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/Repository/DefaultRepositoryFactory.php(44): Doctrine\ORM\EntityManager->getClassMetadata('News') #7 /var/www/html/xxxxx.com/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(698): Doctrine\ORM\Repository\DefaultRepositoryFactory->getRepository(Object(Doctrine\ORM\EntityManager), 'News') #8 /var/www/html/xxxxx.com/public_html/DAO/newsDAO.php(13): Doctrine\ORM\EntityManager->getRepository('News') #9 /var/www/html/xxxxx.com/public_html/handler/indexHDL.php(5): NewsDAO->getAll() #10 /var/www/html/xxxxx.com/public_html/manager/router.php(22): require_once('/var/www/html/l...') #11 /var/www/html/xxxxx.com/public_html/manager/router.php(18): Router->view('index') #12 /var/www/html/xxxxx.com/public_html/manager/router.php(13): Router->routing() #13 /var/www/html/xxxxx.com/public_html/manager/router.php(8): Router->__construct() #14 /var/www/html/xxxxx.com/public_html/manager/CMS.php(11): Router->getInstance() #15 /var/www/html/xxxxx.com/public_html/manager/CMS.php(6): CMS->__construct() #16 /var/www/html/xxxxx.com/public_html/index.php(18): CMS::getInstance() #17 {main} Notice: Undefined variable: rs in /var/www/html/xxxxx.com/public_html/DAO/newsDAO.php on line 17

マイnewsDAO.php

<?php 
require_once MDLDIR."news.php"; 
class NewsDAO{ 
public function __construct(){} 

public function getAll(){ 
    global $em; 
    //$tables = $em->getConnection()->getSchemaManager()->listTables(); 
    //var_dump($tables)--> return a lot of things from database; 
    //$classes = array(); 
    //$metas = $em->getMetadataFactory()->getAllMetadata(); 
    //foreach ($metas as $meta) { 
    // $classes[] = $meta->getName(); 
    //} 
    //var_dump($classes);exit();--> return array(0){} 
    try{  
     //global $em; 
     $rs = $em->getRepository("News")->findAll(); 
    }catch (Exception $e){ 
     echo "ERROR NewsDAO: ".$e; 
    }  
    return $rs; 
    }    
} 
?> 

私のエンティティであるnews.php:構築しながら

は、私はこのエラーを対抗

+------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+------------+--------------+------+-----+---------+----------------+ 
| nid  | int(11)  | NO | PRI | NULL | auto_increment | 
| author  | varchar(50) | NO |  |   |    | 
| date  | int(11)  | NO |  | 0  |    | 
| title  | varchar(255) | NO |  |   |    | 
| content | text   | NO |  | NULL |    | 
| full  | text   | NO |  | NULL |    | 
| title_en | varchar(255) | NO |  |   |    | 
| content_en | text   | NO |  | NULL |    | 
| full_en | text   | NO |  | NULL |    | 
| flink  | text   | NO |  | NULL |    | 
| img  | text   | NO |  | NULL |    | 
+------------+--------------+------+-----+---------+----------------+ 

マイConfig.php:?

<?php 
ini_set("display_errors",true); 
define('TIMER_START', microtime(true)); 
define('DS', DIRECTORY_SEPARATOR); 
define('ROOT_DIR', realpath(dirname(__FILE__)). DS); 
define('DAODIR', ROOT_DIR.'DAO'.DS); 
define('MNGDIR', ROOT_DIR.'manager'.DS); 
define('HDLDIR' , ROOT_DIR.'handler'.DS); 
define('TPLDIR', ROOT_DIR.'template'.DS); 
define('SKNDIR', TPLDIR.'skin'.DS);  
define('MDLDIR', ROOT_DIR.'model'.DS);    
define('DBN', 'xxxxx');   
define('HOST', 'xxxxx');  
define('USR', 'xxxxx'); 
define('PWD','xxxxx'); 
require_once "vendor/autoload.php"; 

use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

$paths = array(MDLDIR); 
$isDevMode = false; 

// the connection configuration 
$dbParams = array(
    'driver' => 'pdo_mysql', 
    'host'  => HOST, 
    'user'  => USR, 
    'password' => PWD, 
    'dbname' => DBN, 
    'charset' =>'utf8', 
); 

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 
$em = EntityManager::create($dbParams, $config); 
//$em->getConnection()->getDatabasePlatform()->registerDoctrinceTypeMapping('enum','string'); 

/*function exceptionHandler($exception){ 
    error_log($exception->getMessage()); 
} 

set_error_handler("exceptionHandler");*/ 

>

私は私のnews.phpファイルにここで間違っているかを把握しようとしています。 なぜそれはうまくいかなかったか??? 誰もが私を助けることができますか? ありがとうございます。 Doctrine Annotationsドキュメントで説明したように

答えて

0

useステートメントを追加し、一例として、右の注釈を(自分のクラスの名前空間を使用していない?)チェック:

<?php 
use Doctrine\ORM\Mapping AS ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="news") 
*/ 
class News{ 
/** 
* @nid 
* @ORM\Column(type="integer") // **my id column is nid** 
* @ORM\GeneratedValue  
*/ 
public $id; 

/** @author 
    * @ORM\Column(type="string")*/ 
public $author; 

・ホープ、このヘルプ

+1

なし何も変わりません。私のエラーはまだそこにある。私は私のニュースCMSに入れるようにコアを作ろうとしているので、今は名前空間を使用していません。 – Hanata

+0

「Rich_news」という名前のテーブルを「news」という名前のエンティティとマップする方法はありますか? – Hanata

+0

テーブル注釈の名前を変更するだけです – Matteo