【问题标题】:Doctrine generate Models. Metadata Configuration教义生成模型。元数据配置
【发布时间】:2015-07-23 12:11:28
【问题描述】:

我在 CodeIgniter Controller 的 Doctrine.php 中使用 Doctrine 的生成方法生成了实体:

function generate_classes(){     

$this->em->getConfiguration()
         ->setMetadataDriverImpl(
            new DatabaseDriver(
                    $this->em->getConnection()->getSchemaManager()
            )
);

$cmf = new DisconnectedClassMetadataFactory();
$cmf->setEntityManager($this->em);
$metadata = $cmf->getAllMetadata();     
$generator = new EntityGenerator();

$generator->setUpdateEntityIfExists(true);
$generator->setGenerateStubMethods(true);
$generator->setGenerateAnnotations(true);
$generator->generate($metadata, APPPATH."models/Entities");

 }

生成的实体具有以下语法:

use Doctrine\ORM\Mapping as ORM;

/**
 * Users
 *
* @ORM\Table(name="users")
* @ORM\Entityz
*/
class Users
{
/**
 * @var integer
 *
 * @ORM\Column(name="idusers", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
 private $idusers;

/**
 * @var string
 *
 * @ORM\Column(name="first_name", type="string", length=45,      nullable=true)
 */
private $firstName;

/**
 * @var string
 *
 * @ORM\Column(name="last_name", type="string", length=45, nullable=true)
 */

现在从我的模型中调用这些实体不起作用。模型没有找到实体。手动将语法更改为以下代码示例后,我让它工作了:

use Doctrine\ORM\Mapping as ORM;

/**
* Users
*
* @Entity @Table(name="users")
*/
class Users
{
/**
 * @var integer
 *
 * @Column(name="idusers", type="integer", nullable=false)
 * @Id
 * 
 */
private $idusers;

/**
 * 
 * @GeneratedValue 
 * @Column(name="first_name", type="string", length=45,     nullable=true)
 */
private $firstName;

现在一切正常! 我不会手动更改每个实体。 如何配置 Doctrine 以生成具有正确语法的实体。正如他们的教程中所使用的那样? http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html

菜鸟问题。请帮忙!

【问题讨论】:

    标签: codeigniter orm configuration doctrine


    【解决方案1】:

    找到解决方案: 在 application/vendor/doctrine/orm/lib/Doctrine/ORM/Tools/EntityGenerator.php 中更改了构造函数:

    public function __construct()
    {
        if (version_compare(\Doctrine\Common\Version::VERSION, '2.2.0-DEV', '>=')) {
            $this->annotationsPrefix = 'ORM\\';
        }
    }
    

    收件人:

    public function __construct()
    {
        if (version_compare(\Doctrine\Common\Version::VERSION, '2.2.0-DEV', '>=')) {
            $this->annotationsPrefix = '';
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多