我想這樣做:在Symfony2中乾淨地擴展Propel模型的策略?
// Model class
namespace Bookshop\Inventory\Model;
use Core\Inventory\Model\Product as BaseProduct;
class Book extends BaseProduct {
// ...
}
// Query class
namespace Bookshop\Inventory\Model;
use Core\Inventory\Model\ProductQuery as BaseProductQuery;
class BookQuery extends BaseProductQuery {
// ...
}
看起來不錯,對吧?但是:
$book = BookQuery::create()->find($id);
var_dump(get_class($book));
// expected: Bookshop\Inventory\Model\Book
// actual: Core\Inventory\Model\Product
AFAIK這是由於波輪的關係是在編譯時定義的事實,而不是運行時......我發現實現這一目標的唯一方法是通過使用GlorpenPropelBundle發現擴展行爲並在我的配置中定義擴展類:
glorpen_propel:
extended_models:
Core\Inventory\Model\Product: Bookshop\Inventory\Model\Book
很好,它的工作,但肯定有更好的方法?我錯過了什麼,或者這是真正拓展Propel + Symfony模型的唯一方法嗎?我真的想用行走在教義,但事情就是這樣離開了我認爲根本的Propel不適合超過一定規模的項目......
(行走1.6 + 2.3 Symfony的BTW)
我懷疑GlorpenPropelBundle是你最好的選擇。我遇到了無法擴展Propel模型的類似問題,通常我所做的就是添加一個新的類,它在構造函數中使用基礎模型。然後在查詢類中,我們只需獲取原始模型,然後包裝它們並返回它們。 –
X-Ref:[FOSUserBundle extend propel User](http://stackoverflow.com/q/16585957/367456) – hakre