我正在努力修复一些错误并为已经投入生产的项目添加新功能。
我需要做什么我觉得谁知道Symfony2和Doctrine很简单,但我是新手,我不知道如何实现我需要的东西:
我在PHP端有一个与数据库中的表相关联的现有实体。
我需要的是创建另一个与其他表有一些外键的实体。
我首先尝试将表创建到数据库中,但我不知道如何在PHP中创建关联实体(正确的注释指向外键)以及如何编辑需要新属性的其他实体在课堂上。
我还尝试过创建一个带注释的PHP类:
[Symfony\Component\Debug\Exception\FatalErrorException]
Compile Error: Cannot redeclare MyProject\MyBundle\Entity\User::setDocumentNumber()
然后,尝试创建getter和setter,启动命令:
.controller('formCtrl', function($scope, $ionicModal, getUrl, $state, $rootScope) {
$ionicModal.fromTemplateUrl('templates/instruction.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
$scope.modal = modal;
});
$scope.openModal = function() {
$scope.modal.show();
}
$scope.closeModal = function() {
$scope.modal.hide();
}
$scope.$on('modal.shown', function() {
$rootScope.modelShown = true;
});
$scope.$on("$ionicView.enter", function(scopes, states) {
if ($rootScope.modelShown != true) {
$scope.openModal();
}
});
})
但它给了我那个错误:
{{1}}
因为它试图再次创建其他实体。
有人可以帮助我吗?
谢谢!
答案 0 :(得分:1)
为什么不尝试使用php app/console doctrine:generate:entity
命令创建实体。这将询问您的Bundle名称,实体名称和列。
在此之后,您将在指定的包中创建.php
文件。按照此URL手动添加当前和新实体之间的关系。
http://symfony.com/doc/current/book/doctrine.html#relationship-mapping-metadata
这是您在Symfony usng注释中提供 manyToOne 关系的方法,您可以切换到分配此关系的方式。 (YML或Symfony支持的任何其他内容)
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
并在目标实体中指定oneToMany,如此
/**
* @ORM\OneToMany(targetEntity="Product", mappedBy="category")
*/
完成此操作后,运行以下命令以获取更改的SQL查询。
php pap/console doctrine:schema:update --dump-sql
您将拥有需要在生产环境中复制和运行的SQL查询输出。如果您的生产和测试环境相同,请执行以下命令。
php pap/console doctrine:schema:update --force
对于上述步骤,您不必在数据库中创建表。学说为你做到了。
如果您已经创建了表格,则可以删除该表格,因为它会在您强制架构时自动创建。