我创建了一个数据库,之后尝试检查./vendor/bin/doctrine orm:schema:update --dump-sql
这是一个简单的测试数据库:
CREATE TABLE `blogs` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*Data for the table `blogs` */
insert into `blogs`(`id`,`name`) values (1,'First blog');
insert into `blogs`(`id`,`name`) values (2,'second bloc');
/*Table structure for table `user` */
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`blogid` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `blogid` (`blogid`),
CONSTRAINT `user_ibfk_1` FOREIGN KEY (`blogid`) REFERENCES `blogs` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*Data for the table `user` */
insert into `user`(`id`,`name`,`blogid`) values (1,'user1',1);
insert into `user`(`id`,`name`,`blogid`) values (2,'user2',2);
用户类:
/**
* @Entity @Table(name="user")
**/
class User
{
/**
* @var int
* @Id
* @GeneratedValue(strategy="IDENTITY")
* @Column(type="integer", options={"unsigned":true})
*/
private $id;
/**
* @var string
* @Column(type="string", length=50)
*/
private $name;
/**
* @var int
* @Column(type="integer", options={"unsigned":true})
* @ORM\ManyToOne(targetEntity="MyTest\Blog", inversedBy="blogid")
* @ORM\JoinColumn(name="blogid", referencedColumnName="id")
*/
private $blogid;
//Getters setters...
}
博客类:
namespace MyTest;
use Doctrine\ORM\Mapping as ORM;
/**
* @Entity @Table(name="blogs")
**/
class Blog
{
/**
* @var int
* @Id
* @GeneratedValue(strategy="IDENTITY")
* @Column(type="integer", options={"unsigned":true})
* @ORM\OneToMany(targetEntity="MyTest\User", mappedBy="blogid")
*/
private $id;
/**
* @var string
* @Column(type="string", length=50)
*/
private $name;
//getters setters
}
,命令输出为:
ALTER TABLE blogs CHANGE name name VARCHAR(50) NOT NULL;
ALTER TABLE user DROP FOREIGN KEY user_ibfk_1;
DROP INDEX blogid ON user;
ALTER TABLE user CHANGE name name VARCHAR(50) NOT NULL;
为什么学说要放弃我的外键?我错过了什么?