如果我有关系OneToOne-> ManyToOne,如何在DB中加入表?
我有数据库MySQL,在表用户中,我需要查看client_id行。但是现在我在表客户端中有行user_id,仅此而已。但是需要表用户中的clien_id。我在doctrinebundle的github中发布了这个问题,因为这是注释@ORM \ JoinColumn
在实体中,当我已向数据库中的ManyToOne提交了object_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;
假设这正是您所期望的...
当然,如果我正确理解了您的问题,这一切都是对的。
(顺便说一句,最好将您的实体重命名为用户和客户端。)