0

ここに問題があります。symphony 2.0で stof バンドルをインストールできません。

進め方:

deps ファイルに次の行を追加します。

[GedmoDoctrineExtensions]
    git=https://github.com/l3pp4rd/DoctrineExtensions.git
    target=bundles/gedmo-doctrine-extensions
    version=e93fc1e0a0

[StofDoctrineExtensionsBundle]
    git=https://github.com/stof/StofDoctrineExtensionsBundle.git
    target=bundles/Stof/DoctrineExtensions/Bundle
    version=6b2a8c74bd

次に、コマンドを実行します

php bin/vendors install --reinstall

すべて良好。

次に、関連ファイルの拡張機能をアクティブにします

# config.yml
stof_doctrine_extensions:
    default_locale: en_US
    orm:
        default:
            tree: true

orm:
    auto_generate_proxy_classes: %kernel.debug%
    auto_mapping: true
    mappings:
        StofDoctrineExtensionsBundle: ~

# AppKernel.php    
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            [...]
            new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
            [...]
        );

# autoload.php
use Symfony\Component\ClassLoader\UniversalClassLoader;
use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = new UniversalClassLoader();
$loader->registerNamespaces(array(
    'Gedmo'            => __DIR__.'/../vendor/gedmo-doctrine-extensions/lib',
    'Stof'             => __DIR__.'/../vendor/bundles', 
    [...]
    ));

最後に、このチュートリアルhttp://gediminasm.org/article/tree-nestedset-behavior-extension-for-doctrine-2#include-extensionのように、エンティティ カテゴリを追加します。

<?php
namespace Myproject\MyBundle\Entity;

use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;

/**
 * @Gedmo\Tree(type="nested")
 * @ORM\Table(name="Category")
 * use repository for handy tree functions
 * @ORM\Entity(repositoryClass="Gedmo\Tree\Entity\Repository\NestedTreeRepository")
 */
class Category
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     */
    private $id;

    /**
     * @ORM\Column(name="title", type="string", length=64)
     */
    private $title;

    /**
     * @Gedmo\TreeLeft
     * @ORM\Column(name="lft", type="integer")
     */
    private $lft;

    /**
     * @Gedmo\TreeLevel
     * @ORM\Column(name="lvl", type="integer")
     */
    private $lvl;

    /**
     * @Gedmo\TreeRight
     * @ORM\Column(name="rgt", type="integer")
     */
    private $rgt;

    /**
     * @Gedmo\TreeRoot
     * @ORM\Column(name="root", type="integer", nullable=true)
     */
    private $root;

    /**
     * @Gedmo\TreeParent
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL")
     */
    private $parent;

    /**
     * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
     * @ORM\OrderBy({"lft" = "ASC"})
     */
    private $children;
}

しかし、コマンド php app/console generate:doctrine:entities MyProjectMyBundle:Category を実行すると、次のエラーが発生します。

Fatal error: Out of memory (allocated -1227096064) (tried to allocate 261900 bytes) in /home/user/Project/vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php on line 75

そして時々これ:

Fatal error: Out of memory (allocated -1222901760) (tried to allocate 261900 bytes) in /home/user/Project/vendor/gedmo-doctrine-extensions/lib/Gedmo/Mapping/MappedEventSubscriber.php on line 176

私は何を間違っていますか?

4

2 に答える 2

1

これらのエラーはSymfonyやDoctrineとは何の関係もありません。私にとって、それはPHP構成の問題のようなものです。

memory_limitファイルの値を増やすことができphp.iniます。ほとんどの場合、128 MBのメモリ制限で十分ですが、プロジェクトが大量のデータを処理している場合は、さらに多くのデータが必要になる場合があります。

于 2012-10-13T19:13:01.967 に答える
0

ツリー拡張のみをロードしてみてください。

doctrine:
    orm:
        entity_managers:
            default:
                mappings:
                    gedmo_tree:
                       type: annotation
                       prefix: Gedmo\Tree\Entity
                       dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
                       alias: GedmoTree # this one is optional and will default to the name set for the mapping
                       is_bundle: false

ドキュメントに記載されているように:https ://github.com/stof/StofDoctrineExtensionsBundle/blob/master/Resources/doc/index.rst#add-the-extensions-to-your-mapping

于 2012-10-13T18:00:37.070 に答える