如果我有关系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;


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

10-08 04:10