我有两个ODM文件,一个是项目包含
class Items {
/**
* @MongoDB\Field(name="item_name", type="string")
*/
protected $itemName;
}
另一份文件是
class ItemLocation {
/**
* @var
* @MongoDB\ReferenceOne(targetDocument="Items")
*/
private $item;
/**
* @MongoDB\Field(name="priority", type="integer")
*/
protected $priority;
/**
* @var
* @MongoDB\ReferenceOne(targetDocument="Location")
*/
private $location;
}
如何将所有项目保持加入项目位置,按位置和按优先级排序。
答案 0 :(得分:1)
为了使所有项目与项目位置保持连接,您可以使用inversedBy和maptedBy选项。
文档项目将如下所示:
class Items {
/**
* @MongoDB\Field(name="item_name", type="string")
*/
protected $itemName;
/**
* @MongoDB\ReferenceMany(targetDocument=ItemLocation::class, mappedBy="item")
*/
private $items_items;
}
文档ItemLocation将如下所示:
class ItemLocation
{
/**
* @var
* @MongoDB\ReferenceOne(targetDocument="Items", inversedBy="items_items")
*/
private $item;
/**
* @MongoDB\Field(name="priority", type="integer")
*/
protected $priority;
/**
* @var
* @MongoDB\ReferenceOne(targetDocument="Location")
*/
private $location;
}
为了生成getter和setter,请使用:
php bin/console doctrine:mongodb:generate:documents appBundle
控制器将如下所示:
$dm = $this->get('doctrine_mongodb')->getManager();
$repository = $dm->getRepository('Items:Categorie');
$i = $repository->findOneBy(array('id' => 'example'));
$items = $i->getItemsItems();
了解更多here。