不能把头包住。我或多或少地从教程中复制了,但是探查器抛出了两个错误:
AppBundle \ Entity \ Brand关联AppBundle \ Entity \ Brand#devices 指的是拥有边的字段AppBundle \ Entity \ Device#brands 不存在。
AppBundle \ Entity \ Device关联AppBundle \ Entity \ Device #brand 指的是反面的字段AppBundle \ Entity \ Brand#brands 不存在。
class Brand {
/**
* @var int
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
...
/**
* @ORM\OneToMany(targetEntity="Device", mappedBy="brands")
*/
private $devices;
}
和
class Device {
/**
* @var int
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
...
/**
* @ORM\ManyToOne(targetEntity="Brand", inversedBy="devices")
* @ORM\JoinColumn(name="brand_id", referencedColumnName="id", nullable=true)
*/
private $brand;
}
答案 0 :(得分:6)
没有测试过,但根据文档,它看起来应该是这样的
class Brand {
/**
* @var int
* @ORM\Column(name="brand_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
...
/**
* @ORM\OneToMany(targetEntity="Device", mappedBy="brand")
*/
private $devices;
}
和
class Device {
/**
* @var int
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
...
/**
* @ORM\ManyToOne(targetEntity="Brand", inversedBy="devices")
* @ORM\JoinColumn(name="brand_id", referencedColumnName="id", nullable=true)
*/
private $brand;
}
答案 1 :(得分:0)
将关联定义为私有不起作用但是一旦我将它们更改为受保护,它就起作用了。虽然最重要的是要注意的是,类中定义的关联应该在inversedby和mappedby属性中使用,而不是类名或表名。这是一篇有用的帖子:What is the difference between inversedBy and mappedBy?