1
之間的表我想創建一個模型,該模型將引用表CustomFieldValue和表CustomField並引用CustomFieldValue。 CustomFieldValue將只有id,value和兩列,一個來自用戶,另一個來自CustomField。我想要像動態添加註冊表單中的新字段一樣的功能。這是個好主意嗎?如果有,請幫我這個模型,因爲它不工作: 用戶:學說 - ManyToOne與
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=25, unique=true)
*/
private $username;
/**
* @ORM\Column(type="string", length=64)
*/
private $password;
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users",cascade={"persist"})
*
*/
private $roles;
/**
* @ORM\Column(type="string", length=60, unique=true)
*/
private $email;
/**
* @ORM\Column(type="string", length=60)
*/
private $sex;
/**
* @ORM\ManyToMany(targetEntity="Region", inversedBy="users")
* @ORM\JoinColumn(name="region", referencedColumnName="id")
*/
private $region;
/**
* @ORM\ManyToMany(targetEntity="Type", inversedBy="users")
* @ORM\JoinColumn(name="type", referencedColumnName="id")
*/
private $type;
/**
* @ORM\Column(name="is_active", type="boolean")
*/
private $isActive;
/**
* @ORM\ManyToOne(targetEntity="CustomFieldValue",inversedBy="id")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $customValues;
CustomFieldValue:
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="value", type="string", length=255)
*/
private $value;
/**
*ORM\OneToMany(targetEntity="User", mapped-by="id")
*@ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/**
*@ORM\OneToMany(targetEntity="CustomField", mapped-by="id")
*@ORM\JoinColumn(name="field_id", referencedColumnName="id")
*/
private $field;
的CustomField:
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255)
*/
private $type;
/**
* @var boolean
*
* @ORM\Column(name="required", type="boolean")
*/
private $required;
/**
* @ORM\ManyToOne(targetEntity="CustomFieldValue", inversedBy="id")
* @ORM\JoinColumn(name="customfield_id", referencedColumnName="id")
*/
private $customValues;
嗨。感謝您的迴應:)但它一般警告:映射Flomedia \ UserBundle \ Entity \ CustomFieldValue#字段和Flomedia \ UserBundle \ Entity \ CustomField#customValues彼此不一致。你能告訴我什麼是不正確的嗎?而且,你能向我解釋一下,映射和反轉是什麼? – user3025978
這是一個複數問題,您需要確保屬性名稱匹配。我已經更新了我的答案,以便它們匹配 – Chausser
好吧..我不知道它是如何工作的。在用戶表中,我有一個名爲user_id的strage列,我不想要它,所以我將user_id更改爲代碼中的id,並且在CustonField中也出現了相同的情況。我現在生成了3張表 - 用戶 - 沒關係。 CustomField - 沒關係,CustomFieldValue - 它沒有任何引用User和CustomField的字段:(它只有id和value字段,如果我不更改user_id給用戶,我的數據庫將不會引用用戶/自定義字段和自定義字段值... – user3025978