mysql - Doctrine 创建外键

标签 mysql symfony doctrine foreign-keys

我在 Doctrine 上遇到外键问题。我有一个“用户”表和一个“订单”表。现在我想要一个从 orders-table 中的 userID 到 user-table 中的 id 的外键。订单实体看起来像:

<?php

namespace Application\TestBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(
 *  name="Orders",
 *  options={"collate"="utf8_general_ci",
 *   "charset"="utf8",
 *   "engine"="InnoDB"
 *  }
 * )
 * @ORM\Entity(repositoryClass="Application\TestBundle\Entity\OrdersRepository")
 */
class Orders
{
    /**
     * @var integer
     *
     * @ORM\Column(
     *  name="id",
     *  unique=true,
     *  type="integer",
     *  options={"unsigned"=true}
     * )
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer
     *
     * @ORM\Column(
     *  name="userID",
     *  type="integer",
     *  nullable=false,
     *  options={"unsigned"=true}
     * )
     * @ORM\OneToOne(targetEntity="User")
     * @ORM\JoinColumn(name="userID", referencedColumnName="id")
     */
    private $userID;

    // ...
}

用户实体看起来像:

<?php

namespace Application\TestBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(
 *  name="User",
 *  options={"collate"="utf8_general_ci",
 *   "charset"="utf8",
 *   "engine"="InnoDB"
 *  }
 * )
 * @ORM\Entity(repositoryClass="Application\TestBundle\Entity\UserRepository")
 */
class User
{
    /**
     * @var integer
     *
     * @ORM\Column(
     *  name="id",
     *  unique=true,
     *  type="integer",
     *  options={"unsigned"=true}
     * )
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    // ...
}

不幸的是不会设置外键。它不在 SQL 查询中。我做错了什么?

最佳答案

解决方法很简单。它只能是关系或数据类型(字符串、对象、整数)。所以我的例子需要一个关系,所以我不得不删除 @ORM\Column-annotation 并且它起作用了!

关于mysql - Doctrine 创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209196/

相关文章:

mysql - 如何在laravel中生成唯一的序列号

mysql - 从表格中获取所选日期每个月的结果集

php - 一些 Laravel 播种器没有执行任何操作 - 没有错误,但没有数据插入表中

php - 像读取数组一样读取 Twig 中的持久集合

java - Tomcat 连接池、空闲连接和连接创建

php - 未检测到 symfony 项目的 PHP 二进制文件

php - 优先考虑存储库中的 MySQL SELECT/LIKE 结果

doctrine-orm - Symfony Doctrine 实体管理器和存储库

php - Doctrine 2 : Call to a member function format() on a non-object . .. 在 DateTimeType.php

php - Doctrine 2 和 Zend 1.11 转换映射错误..