ReferenceOne med MongoDB

stemmer
2

Jeg har et problem med Symfony2.0 Beta3 og MongoDB. Jeg vil lage et dokument, hvor a Felt referanser til en annen klasse, kan dette se slik ut:

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;
    }
}

Men hvis jeg ønsker å finne et sted ved $ id som dette

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();
    }
}

Jeg får denne feil

 No mapping found for field 'location' in class 'test\TestBundle\Document\LocationCache'.

OPPDATER

Her er et dokument

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
)    

Jeg vet ikke hva som er problemet med klassen. Kunne behage noen hjelpe?

Takk på forhånd!

  • Monty
Publisert på 30/05/2011 klokken 11:16
kilden bruker
På andre språk...                            


1 svar

stemmer
3

Hvis du vil søke på hvilket som helst sted felt du trenger å bruke 'embedOne' i stedet for 'referenceOne'. ReferenceOne ikke kopiere plassering felt inn ordnede dokument, det bare data som dette (jeg husker ikke nøyaktig):

{
 refId: '1',
 refColl: 'locations',
 refDb: 'location_database'
}

Men generelt hvis du trenger å spørre bare etter plassering id trenger du bare ta en titt hvordan plassering referansen ser ut i mongodb hjelp mongoshell eller noen andre verktøy.

Så du spør vil bli som dette:

   ->field('location.$refId')->equals($locationID)
Svarte 30/05/2011 kl. 12:20
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more