У меня проблема с Symfony2.0 BETA3 и MongoDB.Я хочу создать документ, где поле ссылается на другой класс, это может выглядеть так:
namespace test\TestBundle\Document;
use test\TestBundle\Document\Location;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/**
* @ODM\Document(collection="locationcache", repositoryClass="test\TestBundle\Document\LocationCacheRepository")
*/
class LocationCache
{
// many more fields...
/**
* @var Location
* @ODM\ReferenceOne(targetDocument="test\TestBundle\Document\Location")
*/
protected $location;
/**
* @param Location
*/
public function setLocation(Location $location)
{
$this->location = $location;
}
/**
* @return Location
*/
public function getLocation()
{
return $this->location;
}
}
Но если я хочу найти местоположение по $ id, как это
class LocationCacheRepository extends DocumentRepository
{
public function findByLocationID(MongoId $locationID)
{
return $this->createQueryBuilder()
->field('location.$id')->equals($locationID)
->sort('year', 'asc')
->sort('month', 'asc')
->getQuery()
->execute();
}
}
Я получу эту ошибку
No mapping found for field 'location' in class 'test\TestBundle\Document\LocationCache'.
ОБНОВЛЕНИЕ
Вот документ
Array
(
[_id] => 4dd637e706936bbcc0ac012d
[days] => Array
(
[1] => Array
(
[money] => 9
)
[2] => Array
(
[money] => 21
)
[3] => Array
(
[money] => 38
)
[4] => Array
(
[money] => 6
)
[18] => Array
(
[money] => 6
)
[19] => Array
(
[money] => 3
)
[31] => Array
(
[money] => 11
)
)
[location] => Array
(
[$ref] => location
[$id] => 4dd554c91c911a6606000000
[$db] => test
)
[money] => 94
[month] => 1
[year] => 2011
)
Я не знаю, в чем проблема скласс.Может кто-нибудь помочь, пожалуйста?
Заранее спасибо!