Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony学说_Php_Mysql_Symfony_Orm_Doctrine Orm - Fatal编程技术网

Php Symfony学说

Php Symfony学说,php,mysql,symfony,orm,doctrine-orm,Php,Mysql,Symfony,Orm,Doctrine Orm,如果我有关系OneToOne->MANYTONE,如何在DB中连接表 我有数据库MySQL,在表用户中我需要查看行客户机id。但现在我在表客户机中有行用户id,仅此而已。但需要表用户中的clien_id。我在doctrinebundle的github中发布了这个问题,因为这是注释@ORM\JoinColumn 在实体中,当我在DB entity_id中提交了许多实体时,但我也在一个域中需要实体_id,我会尝试 * @ORM\JoinColumn(name="developer_id",

如果我有关系OneToOne->MANYTONE,如何在DB中连接表


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

在实体中,当我在DB entity_id中提交了许多实体时,但我也在一个域中需要实体_id,我会尝试

     * @ORM\JoinColumn(name="developer_id", nullable = true, referencedColumnName="id")
但在DB中看不到此列

这是我在数据库中的实体客户端,我有用户\u 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;
这是我的实体用户(不是列客户端id):


我想你对你的关系有点困惑。。。
试试这个:

客户:

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原则: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;
假设这正是你所期望的。。。
当然所有这些都是真的,如果我正确理解了你的问题。。。

(顺便说一句,最好将您的实体重命名为User and Client。)

我不理解您的问题。您要添加哪个关联?实际问题是什么?我有数据库MySQL,在表用户中我需要看到行客户机id。但现在我在表客户机中有行用户id,仅此而已。但需要表用户中的clien_id。我在github的doctrinebundle中发布了这个问题,因为这是注释@ORM\joinColumn,我仍然不完全理解您试图实现的目标。现在你有客户端和用户,每个客户端可以有一个用户,对吗?但你想反过来(即一个用户只能与一个客户机关联,但一个客户机可以与多个用户关联)?你的问题并不清楚。请澄清您希望收到什么?例如:
php bin/console原则:schema:update
将为您生成所需的表,或者当您创建新的用户实例时,实体
用户
将加入到
客户机
,否则…许多人都会自动创建列,这是可以的。但在表user中是否有一个可能列,其中关系为OneToMany。我添加了注释,但在DB中看不到用户表中的行。在表client all well.MANYTONE中自动创建列,这样就可以了。但在表user中是否有一个可能列,其中关系为OneToMany。我添加了注释,但在DB中看不到用户表中的行。在表中客户端都很好。不,这是不可能的。因为在任何情况下,你不需要
用户
中的列
客户id
,你需要
客户
中的列
用户id
,条令会为你创建它。为什么不好?也许你需要重新设计你的数据库模式。。。因为这是一种常见的做法…schema ok,但为了方便客户,希望看到客户,我认为您尝试构建一些wronf。。。例如:我们有table
category
,这应该不知道任何其他表。太棒了!)我们有表
product
,它知道
category
,因为许多产品可以有相同的类别,这就是为什么表product包含字段
category\u id
,因为产品知道category。。。要从产品接收类别,您可以编写如下代码:
$product->getCategory()->getId()。每个人都以这样的方式构建模式,而且它是有效的!)
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;