Import Symfony2:如何将现有数据库导入到不同的bundle中

Import Symfony2:如何将现有数据库导入到不同的bundle中,import,symfony,entity,doctrine-orm,bundle,Import,Symfony,Entity,Doctrine Orm,Bundle,我在这里看到了很多文章,这些文章描述了将应用程序组织在捆绑包中的关注点分离,这些捆绑包在其包含的实体上工作。但它们都没有说明这一点,即这些实体通过不同的捆绑包相互关联 因为我已经有了一个现有的数据库,其中包含帖子、评论、标签、用户、角色等的表,所以我想将这个定义导入我的新symfony2项目中。 我的问题是,我希望在不同的bundle(如BlogBundle、UserBundle、StaticBundle等)中使用它,但我不知道如何将相应的实体导入到正确的bundle中。 进一步的问题是,用户实

我在这里看到了很多文章,这些文章描述了将应用程序组织在捆绑包中的关注点分离,这些捆绑包在其包含的实体上工作。但它们都没有说明这一点,即这些实体通过不同的捆绑包相互关联

因为我已经有了一个现有的数据库,其中包含帖子、评论、标签、用户、角色等的表,所以我想将这个定义导入我的新symfony2项目中。 我的问题是,我希望在不同的bundle(如BlogBundle、UserBundle、StaticBundle等)中使用它,但我不知道如何将相应的实体导入到正确的bundle中。 进一步的问题是,用户实体在post和comment实体中被引用,所以我应该如何做到这一点。当我将post、comment、tag导入BlogBundle时,用户实体还不存在


有谁能给我一个关于如何继续这个过程的提示吗?

实体在bundle之间共享(当然)。 如果你想写博客,你可以创建一个UserBundle(比如可以覆盖awesome)和一个BlogBundle。 UserBundle将包含您的用户实体,BlogBundle将包含您的Post和Comment实体。 下面是一个代码示例:

在您的用户包中:

<?php

namespace YourVendorName\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="my_user_table")
 * @ORM\Entity(repositoryClass="YourVendorName\UserBundle\Entity\UserRepository")
 */
class User
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(name="name")
     */
    private $name;

    // Getters and setters...
}

无论如何,你应该认真阅读,它可能会帮助你理解一切。

谢谢你的回答。这正是我想要的,尽管我已经在考虑这样做了。仅限于将现有数据库中的实体“自动生成”到不同的捆绑包中。但现在我意识到仍然需要一些实践:-)我会这样尝试!是的,如果你的问题是“条令是否足够聪明,可以使用命令条令:mapping:import将实体分派到不同的包中”,那么答案是否定的:)你只需要将实体移动到好的文件夹中。不要忘记原则:映射:导入只是一个助手,仍然需要您完成生成的实体。您完全正确,它是一个助手工具。现在,我将完成userbundle中的用户和角色实体,并将在以后继续使用blogbundle中的引用。
<?php

namespace YourVendorName\BlogBundle\Entity;

class Post
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

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

    /**
     * @ORM\Column(name="body", type="text")
     */
    private $body;

    /**
     * @ORM\Column(name="created_at", type="datetime")
     */
    private $createdAt;

    /**
     * @ORM\ManyToOne(targetEntity="YourVendorName\UserBundle\Entity\User")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    private $author;

    // Getters and setters
}
@ORM\ManyToOne(targetEntity="YourVendorName\UserBundle\Entity\User")