试图加载课程" Doctrine_Core"

时间:2016-11-25 11:58:23

标签: php symfony doctrine-orm

我试图按照以下步骤操作: http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/hierarchical-data.html

如果我错了,请纠正我。首先,我在AppBundle / Model route中创建了这个类:

namespace AppBundle\Model;


class Item extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->hasColumn('name', 'string', 255);
    }

    public function setUp()
    {
        $this->actAs('NestedSet');
    }
}

然后我在这样的控制器中使用它:

$treeObject = Doctrine_Core::getTable('Category')->getTree();

我有两个问题: - 我在哪里定义类别表以及如何定义 - 使用前面的代码我遇到了这个错误:尝试加载类" Doctrine_Core"来自命名空间" AppBundle \ Controller \ Admin

请问好吗?感谢

3 个答案:

答案 0 :(得分:1)

Doctrine拥有Symfony的捆绑包,允许以YML存储所有配置数据。 https://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html - 它有"树扩展"这正是你正在寻找的。

答案 1 :(得分:1)

Doctrine_RecordDoctrine_Core类是Doctrine版本中1.x的一部分,Symfony2正在使用Doctrine 2.x,这与{1.x完全不同1}}版本。例如Doctrine 2.x不使用Active Record方法,这就是您要使用的方法。在Doctrine 2模型类(实体)中,不要扩展任何类

检查这段doc如何在Symfony2中使用Doctrine2

答案 2 :(得分:0)

好的,我按照以下步骤操作:

  1. 安装:http://symfony.com/doc/master/bundles/StofDoctrineExtensionsBundle/index.html
  2. 不要忘记设置扩展程序的配置,在这种情况下为treeconfig.yml设置stof_doctrine_extensions: orm: default: tree: true

    -- ----------------------------
    -- Table structure for appointment
    -- ----------------------------
    DROP TABLE IF EXISTS `appointment`;
    CREATE TABLE `appointment` (
      `appId` tinyint(10) NOT NULL AUTO_INCREMENT,
      `startDateTime` datetime DEFAULT NULL,
      `duration` time DEFAULT NULL,
      PRIMARY KEY (`appId`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
    
    -- ----------------------------
    -- Records of appointment
    -- ----------------------------
    INSERT INTO `appointment` VALUES 
    ('1', '2015-05-04 16:15:00', '00:14:00'),
    ('2', '2015-05-12 08:15:00', '05:54:00'),
    ('3', '2015-05-12 08:35:00', '02:14:00'),
    ('4', '2016-05-04 08:11:00', '04:11:00'),
    ('5', '2015-05-13 19:30:00', '02:50:00');
    
    SELECT DISTINCT x.* 
               FROM appointment x
               JOIN appointment y
                 ON y.startdatetime < x.startdatetime + INTERVAL TIME_TO_SEC(x.duration) SECOND
                AND y.startdatetime + INTERVAL TIME_TO_SEC(y.duration) SECOND > x.startdatetime
                AND y.appid <> x.appid;
    
    
        appId startDateTime       duration
            3 12.05.2015 08:35:00 02:14:00
            2 12.05.2015 08:15:00 05:54:00