我目前正在制作一个模型,但还不太令我满意。我得到了一组具有单继承的对象,它引用了另一个对象:
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和Sf2中的体系结构。 Doctrine2不允许我从我的实体中查询类别对象(文档,因为我正在使用MongoDB)。
class ProductTypeOne
{
private $category_id = 5;
public method getCategory()
{
/** how to query the CategoryObject with ID=5? */
}
}
打开任何输入,提前谢谢!
答案 0 :(得分: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
另一种方法是编写自定义ProductTypeOneRepository
,并在其方法中注入类别。