gpt4 book ai didi

php - Symfony 原则连接表

转载 作者:行者123 更新时间:2023-11-30 22:27:27 24 4
gpt4 key购买 nike

如果我有 OneToOne->ManyToOne 关系,如何在数据库中连接表?

我有数据库 MySQL,在表用户中我需要查看行 client_id。但是现在我在表客户端中有行 user_id,仅此而已。但需要表用户中的 clien_id。我在 doctrinebundle 的 github 中发布了这个问题,因为这是注释 @ORM\JoinColumn

实体中ManyToOne的时候我在DB里填了entity_id,但是OneToMany中我也需要entity_id,我试试

     * @ORM\JoinColumn(name="developer_id", nullable = true, referencedColumnName="id")

但在数据库中看不到这一列

这是我在数据库中的实体客户,我有 user_id

/**
* Clients.
*
* @ORM\Table(name="clients")
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
* @ORM\Entity(repositoryClass="Artel\ProfileBundle\Entity\Repository\ClientsRepository")
* @ExclusionPolicy("all")
*/
class Clients
{
use Timestampable;
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\ManyToOne(targetEntity="Artel\ProfileBundle\Entity\Users", inversedBy="client", cascade={"persist", "remove"}, fetch="EAGER")
*/
protected $user;

这是我的实体用户(不是列 client_id):

/**
* Users.
*
* @ORM\Table(name="users")
* @Gedmo\SoftDeleteable(fieldName="deletedAt")
* @ORM\Entity(repositoryClass="Artel\ProfileBundle\Entity\Repository\UsersRepository")
* @ExclusionPolicy("all")
*/
class Users
{
use Timestampable;
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\OneToMany(targetEntity="Clients", mappedBy="user", orphanRemoval=true, cascade={"persist"})
* @ORM\JoinColumn(name="client_id", nullable = true, referencedColumnName="id")
*/
public $client;

最佳答案

我觉得你对你的关系有点困惑......
试试这个:

客户:

class Clients
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}

用户:

class Users
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Clients")
* @ORM\JoinColumn(name="client_id", referencedColumnName="id")
*/
public $client;
}

现在,如果你运行:php bin/console doctrine:schema:update --force 在你的数据库中将创建表:

CREATE TABLE `clients` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`client_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `IDX_1483A5E919EB6921` (`client_id`),
CONSTRAINT `FK_1483A5E919EB6921` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`)
) ENGINE=InnoDB;

假设这正是您所期望的...
当然这一切都是真的,如果我正确理解你的问题......
(顺便说一句,最好将您的实体重命名为用户和客户。)

关于php - Symfony 原则连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787633/

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