FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Har WN som tidsfördriv
|
Hej,
som de flesta av er redan vet är mongoDB en dokumentdatabas som kan lagra objekt utan problem (i BSON format). Problemet som jag har är att efter att ha sparat ner ett objekt och hämtar sedan ut den i min PHP kod med findOne(...) så är alla referenser till andra objekt helt borta och utbytta med arrayer. Går det på något sätt att behålla dessa? Tex. så blir "foo" i klassen "test" i mitt exempel till array: Kod:
class test { public $foo; public function __construct() { $foo = new SomeClass; } } class SomeClass { public $a = "hejsan"; public $b = "lilla"; } Senast redigerad av jayzee den 2012-02-07 klockan 15:35 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Kan inte php så bra men jag jobbar med mongodb i .net.
det finns en klass med 3 statiska metoder för att jobba med dbreferenser om jag inte minns fel. $refereradeobjektet = MongoDBRef::get($dincollection->db, $dittförstaobjekt['namnpåreferenstypen']); Nåt i den stilen ![]() Refererade objekt följer inte med automatiskt vid hämtning av ett dokument , endast embeddade dokument gör det. Alla referenser måste hämtas i efterhand. Senast redigerad av Kimpo den 2012-02-08 klockan 17:54 |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Kanske vore mindre omständigt att spara objektet som en serialiserad sträng? (Jag har aldrig fått tillfälle att jobba med mongodb så kan mycket väl ha fel)
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Har WN som tidsfördriv
|
Jodå, det är absolut möjligt men vill helst "göra det rätt"
![]() |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Jag blir något konfunderad när du säger att du kan spara och hämta klasser. Jag hittar inte någonstans att man kan spara något annat än associativa arrayer?
Du är säker på att du inte sparar en klass med publika variabler? Som då förmodligen castas till en array när du sparar det som ett mongodb-dokument? Du får gärna dela med dig av något kodexempel. Det kimpo skriver om är en länk mellan dokument som tillhör olika kollektioner i databasen (http://www.php.net/manual/en/class.mongodbref.php). Men jag får känslan av det är något annat du är ute efter. Vad som är "rätt" eller "fel" beror väl på din design. Om det handlar om att byta ut implementationen av ett databas-interface så antar jag att du bör tänka på samma sätt som när du har en vanlig SQL-databas. Att du har tabeller (kollektioner i mongo) med rader som har kolumner (den associativa arrayen). Om du däremot bara vill spara ett objekt någonstans så kanske det rätta vore att spara det som ett serialiserat objekt. / vic |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Administratör
|
Såvitt jag vet kan man inte göra det du försöker göra utan att använda PHPs serialisering, och då är frågan varför man använder en dokument-databas. Det finns dock ramverk som löser ihop-plåstringen åt dig, se till exempel doctrine med mongodb odm - riktigt smidigt.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Har WN som tidsfördriv
|
Usch, hemska tanke att använda ORM till sådant.. Nåja, jag löste det genom att lagra data i array form i klasser i fråga istället - då är datat exakt i samma form innan och efter..
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Administratör
|
Utan en relations-databas finns ingen ORM
![]()
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Har WN som tidsfördriv
|
|||
![]() |
![]() |
Svara |
Ämnesverktyg | |
Visningsalternativ | |
|
|