Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony 3.1中更新失败_Php_Symfony_Orm_Doctrine Orm - Fatal编程技术网

Php 在Symfony 3.1中更新失败

Php 在Symfony 3.1中更新失败,php,symfony,orm,doctrine-orm,Php,Symfony,Orm,Doctrine Orm,我正在与Symfony 3.1中名为Profile和Blog的两个实体合作。在这里,这两个实体构成一对多关系。一个档案可以创建多个博客,而博客属于一个档案。因此,要从博客访问配置文件信息,我想在博客表中创建一个外键。我已经在代码中这样做了,但主要的问题是,当我编写这个命令--$php-bin/console-doctor:schema:update--dump-sql时,它显示 “无需更新-您的数据库已与当前实体元数据同步”。任何人都可以帮我。。。这里我提供了我所做的两个类 //Profile.

我正在与Symfony 3.1中名为
Profile
Blog
的两个实体合作。在这里,这两个实体构成一对多关系。一个
档案
可以创建多个
博客
,而
博客
属于一个
档案
。因此,要从
博客
访问配置文件信息,我想在
博客表
中创建一个
外键
。我已经在代码中这样做了,但主要的问题是,当我编写这个命令--
$php-bin/console-doctor:schema:update--dump-sql
时,它显示 “无需更新-您的数据库已与当前实体元数据同步”。任何人都可以帮我。。。这里我提供了我所做的两个类

//Profile.php

}


实体的注释是错误的。它们应该是这样的:

//Profile.php
<?php
namespace AppBundle\Entity\Profile
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity()
 */
class Profile {
 /**
  * @var int
  */
 private $id;

 /**
  * @ORM\OneToMany(targetEntity="AppBundle\Entity\Blog", mappedBy="product_id")
  */
 private $blogs;

 ...

}

首先,我在终端中运行此命令

$ php bin/console doctrine:migrations:generate
然后我在
up()
方法中编写代码。下面是我的代码

class Version20160831074611 extends AbstractMigration
{
    /**
     * @param Schema $schema
     */
    public function up(Schema $schema)
    {

        $blogTable = $schema->getTable('blog');
        $product1Table =$schema->getTable('product1');

        if(!$blogTable->hasColumn('product1_id'))
       {
            $blogTable->addColumn('product1_id','integer')->setNotnull(false);
        }
        if(!$blogTable->hasIndex('FK_product_idx'))
       {
            $blogTable->addIndex(['product1_id'],'FK_product_idx');
        }
        if(!$blogTable->hasForeignKey('FK_product1'))
        {
            $blogTable->addForeignKeyConstraint($product1Table,
                ['product1_id'],
                ['id'],
                ['OnUpdate'=>'CASCADE','OnDelete'=>'CASCADE','FK_product1']
            );
        }

    }

    /**
     * @param Schema $schema
     */
    public function down(Schema $schema)
    {
        // this down() migration is auto-generated, please modify it to your          needs

    }
} 
最后,我在终端中运行此命令并完成

$ php bin/console doctrine:migrations:migrate 20160831074611

我认为,您忘记了实体的
@ORM\Entity()
注释。尝试这是我的要点。我已经试过了,但没有其他办法……谢谢奥斯卡·佩雷斯。我已经这样做了,但失败了。问题是Symfony 3.1不支持这种格式。此版本支持迁移公式。我已经成功地生成了新的迁移类。我已经使用了up()方法来完成这项任务。请用正确的解决方案为您的问题添加一个答案,这样我们都可以将其作为将来的参考。我大约在8分钟前回答了这个问题!谢谢你
$ php bin/console doctrine:migrations:generate
class Version20160831074611 extends AbstractMigration
{
    /**
     * @param Schema $schema
     */
    public function up(Schema $schema)
    {

        $blogTable = $schema->getTable('blog');
        $product1Table =$schema->getTable('product1');

        if(!$blogTable->hasColumn('product1_id'))
       {
            $blogTable->addColumn('product1_id','integer')->setNotnull(false);
        }
        if(!$blogTable->hasIndex('FK_product_idx'))
       {
            $blogTable->addIndex(['product1_id'],'FK_product_idx');
        }
        if(!$blogTable->hasForeignKey('FK_product1'))
        {
            $blogTable->addForeignKeyConstraint($product1Table,
                ['product1_id'],
                ['id'],
                ['OnUpdate'=>'CASCADE','OnDelete'=>'CASCADE','FK_product1']
            );
        }

    }

    /**
     * @param Schema $schema
     */
    public function down(Schema $schema)
    {
        // this down() migration is auto-generated, please modify it to your          needs

    }
} 
$ php bin/console doctrine:migrations:migrate 20160831074611