2016-10-22 124 views
2

我在寫我自己的CMS學說2.5.4和純PHP 5學說2註釋問題

這是my CMS(GOOGLE鏈接)。在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文件這裏是錯的? 爲什麼不能解決? 大家可以幫我嗎? 在此先感謝。

回答

0

正如Doctrine Annotations文檔描述,添加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