0

我目前正在制作一个模型,但还不能让我很满意。我得到了一组具有单继承的对象,它们引用了另一个对象:

class Category
{
    /** @MongoDB\Id(strategy="auto") */
    protected $id;

    /** @MongoDB\Int */
    protected $categoryId;

    /** @MongoDB\String */
    protected $title;
}

class ProductTypeOne extends BaseProductType
{
    /** @MongoDB\Id(strategy="auto") */
    protected $id;

    /** @MongoDb\ReferenceOne(targetDocument="Category") */
    private $category;     

}

我目前面临的问题是,当我创建一个对象 ProductTypeOne 时,我实际上知道它将引用哪个类别 - 这个 ProductType 总是相同的。

我可以设置一个修复参数,例如category_id = 1- 但 Sf2 和 Doctrine2 中的体系结构不允许我从我的实体(文档,因为我使用 MongoDB)中查询类别对象。

class ProductTypeOne 
{

    private $category_id = 5;

    public method getCategory()
    {   
       /** how to query the CategoryObject with ID=5? */
    }
}

打开任何输入,在此先感谢!

4

1 回答 1

0

那么试试这个:

class ProductTypeOne extends BaseProductType
{

    static $DEFAULT_CATEGORY = 5;

    // rest of the code

}

在插入时[在控制器中],您设置类别:

$product = new ProductTypeOne;

// do whatever you need to fill the instance

$product -> setCategory(
    $this -> getDoctrine() -> getRepository('Category') -> findOneById( ProductTypeOne::$DEFAULT_CATEGORY )
);

// persist $product, beer time

另一种方法是编写 custom ProductTypeOneRepository,并在其方法中注入类别。

于 2012-08-24T16:34:14.360 回答