Php 小错误,但我不知道';看不到哪里-Symfony外键

Php 小错误,但我不知道';看不到哪里-Symfony外键,php,symfony,foreign-keys,key,Php,Symfony,Foreign Keys,Key,嘿,伙计们,我犯了一个错误(我想我犯了一个非常愚蠢的错误,但我不认为我们是在浪费时间)我问你们这个问题。错误是我的外键格式不正确。再精确不过了。。。Thx给所有试图回答或搜索的人:p 我的用户兴趣: /** * UserInterest * * @ORM\Table(name="user_interest", indexes {@ORM\Index(name="userInterest_category_id_fk", columns={"category_id"})}) * @ORM\Enti

嘿,伙计们,我犯了一个错误(我想我犯了一个非常愚蠢的错误,但我不认为我们是在浪费时间)我问你们这个问题。错误是我的外键格式不正确。再精确不过了。。。Thx给所有试图回答或搜索的人:p

我的用户兴趣:

/**
* UserInterest
*
* @ORM\Table(name="user_interest", indexes {@ORM\Index(name="userInterest_category_id_fk", columns={"category_id"})})
* @ORM\Entity
*/
class UserInterest
{

/**
 * @var \AppBundle\Entity\Category
 *
 * @ORM\Id
 * @ORM\ManyToOne(targetEntity="Category")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="category_id", referencedColumnName="id")
 * })
 */
 private $category;
 }
/**
* UserInterest
*
* @ORM\Table(name="Category", uniqueConstraints {@ORM\UniqueConstraint(name="category_id_uindex", columns={"id"})})
* @ORM\Entity
*/
class Category
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 * @ORM\OneToOne(targetEntity="UserInterest", inversedBy="Category")
 */
protected $id;
我的类别实体:

/**
* UserInterest
*
* @ORM\Table(name="Category", uniqueConstraints {@ORM\UniqueConstraint(name="category_id_uindex", columns={"id"})})
* @ORM\Entity
*/
class Category
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 * @ORM\OneToOne(targetEntity="UserInterest", inversedBy="Category")
 */
protected $id;

错误在于:php-bin/console-doctrine:schema:update--force-tat告诉我:外键约束格式不正确

关系不能映射到ID上,而必须映射到单独的属性上。在category类上,可以创建一个UserIntrest属性,定义具有此类别的UserIntrest。例如:

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

    /**
     * @ORM\OneToMany(targetEntity="UserInterest", mappedBy="category")
     */
    protected $intrests;
}

class UserIntrest
{
   /**
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id()
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id

    /**

     * @ORM\ManyToOne(targetEntity="Category", inversedBy="intrests")
     */
    protected $category;
}

参考一下

如果你不能解释错误,没有人能帮你。当我尝试这样做时:php bin/控制台原则:schema:update--force tat告诉我:SQLSTATE[HY000]:一般错误:1025将“/program/#sql-1112_bc”重命名为“/program”(errno:150“外键约束格式不正确”)时,它告诉我:[创建错误]在属性AppBundle\Entity\UserInterest::$category上声明的批注@ORM\ManyTone没有名为“mappedBy”的属性。可用属性:targetEntit y、cascade、fetch、inversedBySwitch the inversed my and mapped by、my fault您是否从类别属性中删除了@id注释?是否有多个属性具有@id注释?您是否可以尝试使用每个类只有一个属性具有@id注释。否则,您必须创建组件osite ID,这将需要更多的努力。