| 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 16:35 |
||
|
|
Svara med citat
|
|
|
#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 18:54 |
||
|
|
Svara med citat
|
|
|
#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)
|
||
|
|
Svara med citat
|
|
|
#4 | ||
|
|||
|
Har WN som tidsfördriv
|
Jodå, det är absolut möjligt men vill helst "göra det rätt"
|
||
|
|
Svara med citat
|
|
|
#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 |
||
|
|
Svara med citat
|
|
|
#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 |
||
|
|
Svara med citat
|
|
|
#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..
|
||
|
|
Svara med citat
|
|
|
#8 | ||
|
|||
|
Administratör
|
Utan en relations-databas finns ingen ORM
Du får det så smidigt som möjligt med väldigt mycket overhead med en ODM, så ja om det är en hemsk tanke beror helt på projektet skulle jag säga.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
|
|
Svara med citat
|
|
|
#9 | ||
|
|||
|
Har WN som tidsfördriv
|
|||
|
|
Svara med citat
|
| Svara |
|
|