我有三个表结构:tournament,group和team.所述tournament和group表具有一个一对多关系,group并team具有一个对多关系如下所示.
我如何复制的价值tournament_id,从group表到group_tournament_id的team表?
我正在寻找一个使用create语句来实现这个目标的答案
create table team (
id serial primary key,
group_id int references group,
group_tournament_id int references group(tournament_id)
);
Run Code Online (Sandbox Code Playgroud)
当然这不起作用,因为为了引用它必须是唯一的东西,在这种情况下,tournament_id不是唯一的
当我插入团队时,我需要一种标准的方法来将tournament_idfrom 的值复制group到'team'表中group_tournament_idgroup_id insidetable
编辑:不再需要在symfony中回答,只需postgreSQL即可
postgresql database-design one-to-many table-relationships postgresql-9.6
我最近解决了查询ManyToMany关系连接表的问题,解决方案与此答案相同,并且想知道它是如何工作的.假设我和ManyToMany之间有一个简单的关系,会有一个表格会自动在这里创建groupsteamgroups_team
团体实体
/**
* Groups
*
* @ORM\Table(name="groups")
* @ORM\Entity(repositoryClass="AppBundle\Model\Repository\GroupsRepository")
*/
class Groups {
/**
* @ORM\ManyToMany(targetEntity="Team", inversedBy="group")
*/
protected $team;
public function __construct() {
$this->team = new ArrayCollection();
}
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="groupname", type="string", length=255)
*/
private $groupname;
//obligatory getters and setters :)
Run Code Online (Sandbox Code Playgroud)
团队实体
/**
* Team
*
* @ORM\Table(name="team")
* @ORM\Entity(repositoryClass="AppBundle\Model\Repository\TeamRepository") …Run Code Online (Sandbox Code Playgroud) symfony生成的自动crud操作以及symfony演示应用程序具有以下用于删除操作的代码结构
/**
* Deletes a testing entity.
*
* @Route("/{id}", name="testing_delete")
* @Method("DELETE")
*/
public function deleteAction(Request $request, testing $testing)
{
$form = $this->createDeleteForm($testing);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->remove($testing);
$em->flush();
}
return $this->redirectToRoute('testing_index');
}
/**
* Creates a form to delete a testing entity.
*
* @param testing $testing The testing entity
*
* @return \Symfony\Component\Form\Form The form
*/
private function createDeleteForm(testing $testing)
{
return $this->createFormBuilder()
->setAction($this->generateUrl('testing_delete', array('id' => $testing->getId())))
->setMethod('DELETE')
->getForm()
;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么我们需要一个表格来删除?我们只是在树枝上有一个相应的 …
symfony 2安装程序提供了最佳实践目录结构,但没有说明如何使用这些目录,每个代码片段在哪里,确保symfony框架将其缩小到视图,实体和控制器,服务等.但更常见的是,程序员最终在控制器中放置了一个DQL查询,并在处理特定任务时使用了一些逻辑,而这就完成了工作,必须有一个更好的方法,甚至超越symfony开箱即用的目录结构,目前寻求更好的设计模式,尽可能模块化和重用
在这个任务中,在interwebz上发现了几篇好文章,并花了一天时间,它想出了一个计划,将所有数据库交互分离到存储库,所有逻辑服务,并保持控制器"瘦"作为中心从存储库和调用服务调用方法的要点.听起来不错,将是模块化的,代码可以重复使用....但是
这在某种程度上从OOP概念转移到程序编程,而不是它有任何问题,它只是没有利用OOP的强大概念
通过添加更多功能可以使对象更"强大",使其更好吗?根据定义,服务应该是一个单元的任务,我的方法会使它们变得大而丑
在这个博客上几个好点的位置,但便无法真正做到了什么,他们试图提出一个解决方案
一般而言,您在服务中发现的行为越多,您就越有可能剥夺自己对域模型的好处.如果你的所有逻辑都在服务中,那么你就会失明 - 马丁福勒
总结一下,面向服务的方法没有利用OOP的概念?怎么可以补充
我正在使用Symfony2.8,当我使用命令行生成控制器和树枝模板时,模板是在
MyBundle/Resources/views/home/home.html.twig
我想遵循symfony docs建议的最佳实践并将其放入
app/Resources/views/home/home.html.twig
我可以剪切并粘贴树枝文件然后{% extends %}根据需要进行更改,但之后我的头发会变小,因为我会把它拉出来.
那么我在提示符中键入什么以便它MyBundle像往常一样生成控制器但是twig文件将在全局app/Resources/views 文件夹下
谢谢!
编辑:新的扩展问题
我正在尝试简化数据库结构,我有两个表matches和team_statistics:
在这里,在team_statistics表中team_statistics.team_id应该是一个外键引用matches.teams_id和matches.teams_id1,同样team_statistics.group_id应该是一个外键引用matches.groups_id和matches.groups_id1
如何在PostgreSQL中执行此操作?
如果存在具有与另一个表这样做的其他方式matches和team_statistics我开放的建议,但我仍想知道如何有一个外键引用两个主键.
php ×4
symfony ×4
postgresql ×2
symfony-2.8 ×2
doctrine ×1
doctrine-orm ×1
foreign-keys ×1
many-to-many ×1
mysql ×1
one-to-many ×1
oop ×1
sql ×1
templates ×1
twig ×1