第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我是否以正確的方式設(shè)計(jì)我的 Symfony 實(shí)體?

我是否以正確的方式設(shè)計(jì)我的 Symfony 實(shí)體?

PHP
撒科打諢 2023-08-06 15:40:26
我有一個(gè)名為“產(chǎn)品”的通用實(shí)體,它有一些簡(jiǎn)單的字段,例如名稱、描述和價(jià)格。我想使用它作為基礎(chǔ)實(shí)體,以便我可以基于此產(chǎn)品實(shí)體創(chuàng)建具有完全相同字段的其他實(shí)體。我可以輕松復(fù)制整個(gè)實(shí)體類和存儲(chǔ)庫(kù)文件并將它們重命名為 Product1、Product1Repository 等,但我覺得這會(huì)重復(fù)很多代碼。我肯定需要處理實(shí)體的副本,向我的數(shù)據(jù)庫(kù)設(shè)計(jì)添加另一個(gè)屬性/列將無法滿足我想要做的事情。擴(kuò)展或繼承此類的最佳方法是什么,以便 Product2、Product3、ProductN 類可以作為準(zhǔn)系統(tǒng)類存在,只繼承 Product1 的所有內(nèi)容,并且還具有相應(yīng)的 Doctrine 存儲(chǔ)庫(kù)?我需要做什么才能實(shí)現(xiàn)這個(gè)目標(biāo)?這是我到目前為止的代碼:<?phpnamespace App\Entity;use App\Repository\ProductRepository;use Doctrine\ORM\Mapping as ORM;/** * @ORM\Entity(repositoryClass=ProductRepository::class) */class Product{    /**     * @ORM\Id()     * @ORM\GeneratedValue()     * @ORM\Column(type="integer")     */    private $id;    /**     * @ORM\Column(type="string", length=255)     */    private $name;    /**     * @ORM\Column(type="string", length=255)     */    private $description;    /**     * @ORM\Column(type="string", length=255)     */    private $price;//Getters and setters here...謝謝你!
查看完整描述

2 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

為什么不讓你的基礎(chǔ)實(shí)體產(chǎn)品變得抽象呢?那么你所有的其他產(chǎn)品都可以擴(kuò)展它嗎?


抽象的:


/**

 * @ORM\Entity(repositoryClass=ProductRepository::class)

 */

abstract class Product

{

產(chǎn)品1:


/**

 * @ORM\Entity(repositoryClass=Product1Repository::class)

 */

class Product1 extends Product

{


查看完整回答
反對(duì) 回復(fù) 2023-08-06
?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以從 Doctrine 文檔中檢查類表繼承。

基本上,您使用子實(shí)體共有的所有字段創(chuàng)建基本實(shí)體,然后創(chuàng)建一個(gè)鑒別器列并映射該列可以具有的值,這些值將映射到您的子實(shí)體。

<?php

namespace MyProject\Model;


/**

* @Entity

* @InheritanceType("JOINED")

* @DiscriminatorColumn(name="discr", type="string")

* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})

*/

class Person

{

? ? // ...

}


/** @Entity */

class Employee extends Person

{

? ? // ...

}

通過這種方式,您將擁有一個(gè) Person 表,其中包含名為“discr”的列以及您聲明的所有其他字段;和一個(gè)名為 Employee 的表,其中 Person.id 作為主鍵,Person 的外鍵,加上您在“Employee”實(shí)體中聲明的所有字段。


查看完整回答
反對(duì) 回復(fù) 2023-08-06
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)