当前位置: 首页 > 知识库问答 >
问题:

教义2注释问题

微生嘉
2023-03-14

我写我自己的CMS与教义2.5.4和纯PHP 5。

这是我的CMS(谷歌链接)。

在构建过程中,我反驳了这个错误:

错误NewsDAO:异常“条令\ORM\Mapping\MappingException”和消息“Class”News不是有效的实体或映射的超类。'in/var/www/html/xxxxx.com/public_html/vendor/doctor/orm/lib/doctor/orm/MappingException.php:346堆栈跟踪:#0/var/www/html/xxxxx.com/public_html/vendor/doctor/orm/lib/doctor/orm/Mapping/Driver/AnnotationDriver.php(91):Doctrine\ORM\Mapping\MappingException::ClassisNoTavalidityOrmappedSuperClass(“新闻”)#1/var/www/html/xxxxx.com/public_html/vendor/Doctrine/ORM/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(151):Doctrine\ORM\Mapping\Driver\AnnotationDriver-

MynewsDAO.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

<?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;    
}
?>

mysql中的My tableRich\u news

+------------+--------------+------+-----+---------+----------------+
| 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文件中的错误。为什么没有成功???大家能帮帮我吗???提前谢谢。

共有1个答案

米景辉
2023-03-14

如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;

希望这能有所帮助

 类似资料:
  • 2. 注释 单行注释应采用/*␣comment␣*/的形式,用空格把界定符和文字分开。多行注释最常见的是这种形式: /* ␣*␣Multi-line ␣*␣comment ␣*/ 也有更花哨的形式: /*************\ * Multi-line * * comment * \*************/ 使用注释的场合主要有以下几种。 1、整个源文件的顶部注释。说明此模块的相

  • 我有一个实体,它将从traits中获取其属性(和基本方法): 这是正确的。但是,当我尝试将注释放在

  • 我正在学习《棱角2》。 我希望使用@ViewChild注释从父组件访问子组件。 这里有几行代码: 在BodyContent.TS我有: 在filtertiles.ts中时: 最后,这里是模板(如注释中所建议的): BodyContent.html filtertiles.html html模板被正确加载到ico-filter-tiles标记中(确实我能够看到标题)。 注意:使用DynamicCom

  • 问题内容: 我正在从DropWizard 0.7.1迁移到0.8.1的过程中。这包括从Jersey 1.x迁移到2.x。在使用Jersey 1.18.1的实现中,我实现了(为简单起见,更改了所有类名)。此类将创建包含自定义注入批注的对象。包含传递并由读取的各种属性。最后,在该类中,我注册的新实例,如下所示。 我已经进行了一些研究,似乎无法完全围绕如何在Jersey 2.x中创建(或替换)这样的se

  • 问题内容: 我为我写了一个 对于每个我使用以下注释 因此,我决定定义自己的注释女巫,其中包含所有这样的注释 然后,我只用了一个注释 修改后,测试失败 为了使其再次工作,需要我将其添加到 我的问题是为什么我的注释包含注释时不起作用?注释有什么特别之处吗?还是我错过了什么? PS:我使用相同的方法,它们也很好用。 问题答案: 这种机制是Spring框架特有的,在这种机制中,您可以使用本身带有其他注释的

  • 使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。 连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释,可以使用 ":起始行,终止行 s/^/#/g",例如: :1,10s/^/#/g 表示在第 1~10 行行首加"#"注释。"^"意为行首;"g"表示执行替换时不询问确认。如果希望