gpt4 book ai didi

Symfony 和 Doctrine : cross database relations

转载 作者:行者123 更新时间:2023-12-05 03:11:36 25 4
gpt4 key购买 nike

我有两个实体 Entity1Entity2 具有 OneToMany 关系,但它们位于两个 MySQL 数据库中。

我如何在 Symfony 中实现这些实体及其关系?

是否可以创建两个单独的包来实现这些实体?

最佳答案

在 Doctrine 中,跨数据库连接数据在技术上不受设计功能的“支持”,但您可以通过稍微欺骗 Doctrine 使其工作。

如果您想在实体之间建立关系,那么它们必须使用相同的连接:相同的数据库。

让多个数据库工作的关键是在你的实体类中,你需要指定实体的表名,前缀是表所属的数据库的名称。下面是一个使用注解的例子:

<?php
namespace Demo\UserBundle\Entity;

use DoctrineORMMapping as ORM;

/**
* Demo\UserBundle\Entity\User
*
* @ORMTable(name="users.User")
*/
class User implements
{
/* ... */
}

<?php
namespace Demo\PostBundle\Entity;

use DoctrineORMMapping as ORM;

/**
* Demo\PostBundle\Entity\Post
*
* @ORMTable(name="posts.Post")
*/
class Post implements
{
/* ... */
}

和关系表:

<?php
namespace Demo\PostBundle\Entity;

use DoctrineORMMapping as ORM;

/**
* Demo\PostBundle\Entity\Post
*
* @ORMTable(name="posts.Post")
*/
class Post implements
{
/**
* @ORM\ManyToOne(targetEntity="\Demo\UserBundle\Entity\User")
**/
private $user;

/* ... */

/**
* Set user
*
* @param \Demo\UserBundle\Entity\Site $site
* @return Post
*/
public function setUser($user)
{
$this->user = $user;

return $this;
}

/**
* Get user
*
* @return \Demo\UserBundle\Entity\Site
*/
public function getUser()
{
return $this->user;
}
}

Here一篇关于它的文章。

希望对你有帮助

关于Symfony 和 Doctrine : cross database relations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36696793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com