Php 小错误,但我不知道';看不到哪里-Symfony外键
嘿,伙计们,我犯了一个错误(我想我犯了一个非常愚蠢的错误,但我不认为我们是在浪费时间)我问你们这个问题。错误是我的外键格式不正确。再精确不过了。。。Thx给所有试图回答或搜索的人:p 我的用户兴趣: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
/**
* 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,这将需要更多的努力。