我正在開發一個 Symfony 5 包,我想在不同的專案中使用它。該捆綁包包括許多可在專案中使用的不同物體。一些專案將使用所有這些物體,其他只是一些,有些專案將不使用這些物體中的任何一個,而僅使用捆綁包提供的其他功能。
但是,Doctrine 將始終為所有專案中的所有這些物體自動創建相應的資料庫表。所以專案資料庫中有很多空的/未使用的表。
雖然空表沒有任何真正的危害,但我認為這不是一個真正干凈的方法。是否可以將這些物體設為可選,讓專案決定使用哪些以及必須創建哪些表?
當然,bundle 有責任確保不能使用停用的物體,但這沒有問題。
顯然,我可以將包分解為多個不同的包,這些包都只包含幾個/一個物體,但這會產生大量開銷并且也不干凈。
uj5u.com熱心網友回復:
您可以通過撰寫自己的元資料驅動程式來創建自定義行為。
為了不改寫一切,你可以擴展Doctrine\ORM\Mapping\Driver\AnnotationDriver類,并只呼叫parent::loadMetadataForClass($className, $metadata);,如果className是你的物體允許串列上,這取決于你的包配置。
您需要在 Symfony 上注冊您的元資料驅動程式:
doctrine:
orm:
mappings:
your-bundle:
is_bundle: true
type: Path\To\Your\Driver
prefix: 'Namespace\of\your\bundle\Entity\'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/371977.html
