所有屬性,將有隻有一個值,你不必使用單獨的表(實體)爲,使用簡單的屬性(變量)和app/console doctrine:generate:entities
將創建所有必需的獲取者和設置者。
如果您仍然需要(出於某種原因)在所有情況下爲所有屬性創建實體(價格,銷售額,收入...)並配置OneToOne或OneToMany(取決於您是否想要對該財產具有單一價值或多個價值)產品和相關實體之間的鏈接。
例如:
class Product {
...
/**
* @var \Doctrine\Common\Collections\ArrayCollection
* @ORM\OneToMany(targetEntity="Price", mappedBy="product")
*/
protected $prices;
/**
* @var Stock
* @ORM\OneToOne(targetEntity="Stock", mappedBy="product")
*/
protected $stock;
...
}
現在,OneToOne關係的股票實體:
class Stock {
...
/**
* @var integer
* @ORM\Column(name="amount", type="integer")
*/
protected $amount;
/**
* @var Product
* @ORM\OneToOne(targetEntity="Product", inversedBy="stock")
*/
protected $product;
...
}
而且價格實體多對一的關係:
class Price {
...
/**
* @var float
* @ORM\Column(name="price", type="float")
*/
protected $price;
/**
* @var Product
* @ORM\ManyToOne(targetEntity="Product", inversedBy="prices")
*/
protected $product;
...
}
正如我前面提到app/console doctrine:generate:entities
將根據配置創建所有必需的獲取者和設置者。
注意:請記住,使用此配置,具有OneToOne關係的子實體將使用附加字段更新 - product_id。 OneToMany不會改變你的模式。
希望幫助
乾杯
太感謝你了,它的確是有幫助的。在這種方法中,教條會對獲取信息提出太多疑問?第二個問題:如果我堅持一個沒有價格的對象,它會在價格表中創建一個空行嗎? – Arsham
由於產品中的價格屬性是OneToMany關係,因此當您將產品保存爲空價格列表時,數據庫中將不會創建任何內容。另一方面,如果您選擇爲其他實體(屬性)創建OneToOne關係,則必須手動或使用級聯在構造函數中創建它們。如果你不會這樣訪問這些屬性會拋出異常。稍後訪問它們將執行額外的數據庫查詢。如果你不想要這個,那麼就像我之前建議的那樣使用常規屬性(列)。 – sickelap