/** * Tämä palauttaa onnistuessaa uuden Tietokantarivi-luokan olion, jossa on * samanlaiset solut kuin tämän luokan tietokantarivillä ja jonka * id-tunnisteen arvo on $id. * Solujen arvoiksi syötetään tietokannan arvot. Metodi luo siis uuden * tietokantarivin, <i>eikä tee muutoksia this->tietokantarivi-olioon</i>. * * <p> * Tätä voidaan hyödyntää esimerkiksi ennen muutosten tallennusta niin, että * tämän avulla voidaan tarkistaa, onko yhtään tietoa muutettu. * </p> * * Ellei tunnistetta vastaavaa riviä löydy tietokannasta, palautetaan arvo * Malliluokkapohja::$EI_LOYTYNYT_TIETOKANNASTA. * Palautteen arvioinnissa kannattaa käyttää instanceof-metodia. * * @param type $id */ public function hae_tietokantarivi_tietokannasta($id) { $palaute = Malliluokkapohja::$EI_LOYTYNYT_TIETOKANNASTA; $tietokantasolut_array = array(); foreach ($this->get_tietokantasolut() as $solu) { if ($solu instanceof Tietokantasolu) { array_push($tietokantasolut_array, new Tietokantasolu($solu->get_sarakenimi(), $solu->get_arvon_tyyppi())); } } // Haetaan arvot tietokannasta: $osumataulukko = $this->tietokantaolio->hae_eka_osuma_taulukkona($this->tk_taulunimi, Malliluokkapohja::$SARAKENIMI_ID, $id); // Huom! Alla osumataulukko sisältää kaikki tiedot kahteen kertaan // (indeksin ja sarakenimen avulla haettaviksi)! if (!empty($osumataulukko) && sizeof($osumataulukko) == 2 * sizeof($tietokantasolut_array)) { foreach ($tietokantasolut_array as $solu) { $solu->set_arvo_kevyt($osumataulukko[$solu->get_sarakenimi()]); } $palaute = new Tietokantarivi($this->tk_taulunimi, $tietokantasolut_array); } else { $this->lisaa_virheilmoitus("Virhe metodissa 'hae_tietokantarivi" . "_tietokannasta'. Osumataulukon koko =" . sizeof($osumataulukko) . " ja tietokantasolut_arrayn koko=" . sizeof($tietokantasolut_array)); } return $palaute; }
/** * Palauttaa henkilön valtuusarvon tai arvon $EI_LOYTYNYT_TIETOKANNASTA, * ellei mitään löydy. * @param type $id * @param Tietokantaolio $tietokantaolio */ public static function hae_henkilon_valtuusarvo($id, $tietokantaolio) { $palaute = Henkilo::$EI_LOYTYNYT_TIETOKANNASTA; $osuma = $tietokantaolio->hae_eka_osuma_taulukkona(Henkilo::$taulunimi, Henkilo::$SARAKENIMI_ID, $id); if (!empty($osuma)) { $palaute = $osuma[Henkilo::$sarakenimi_valtuudet]; } return $palaute; }