我有两个odm文档一个是项目包含
class Items {
/**
* @MongoDBField(name="item_name", type="string")
*/
protected $itemName;
}
和另一个文档是
class ItemLocation {
/**
* @var
* @MongoDBReferenceOne(targetDocument="Items")
*/
private $item;
/**
* @MongoDBField(name="priority", type="integer")
*/
protected $priority;
/**
* @var
* @MongoDBReferenceOne(targetDocument="Location")
*/
private $location;
}
我如何使所有物品都与项目位置连接在一起,该项目位置按位置和优先级订购。
为了使所有项目与项目位置一起使用,您可以使用iNversedby和mappedby选项。
文档项目将是这样:
class Items {
/**
* @MongoDBField(name="item_name", type="string")
*/
protected $itemName;
/**
* @MongoDBReferenceMany(targetDocument=ItemLocation::class, mappedBy="item")
*/
private $items_items;
}
文档itemlocation将是这样的:
class ItemLocation
{
/**
* @var
* @MongoDBReferenceOne(targetDocument="Items", inversedBy="items_items")
*/
private $item;
/**
* @MongoDBField(name="priority", type="integer")
*/
protected $priority;
/**
* @var
* @MongoDBReferenceOne(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();
在此处阅读更多。