Update sloupce jine tabulky v databazi

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
makzak
Člen | 4
+
0
-

Ahoj,

chtel bych pozadat o pomoc s databazi. Mam 2 nasledujici tabulky:

Users

  • id
  • name
  • email
  • login

Test

  • id
  • users_id
  • sloupec

a volani:

$selection = $this->Db->table('users')->select('users.id,name,login,password,regcode,:test.sloupec');
$selection->get($id)->update(array(":test.sloupec" => "nova_hodnota"));    // neaktualizuje data

Volani skonci s chybou „Unknown column ‚test.sloupec‘“, coz je pochopitelne, protoze vygenerovany SQL dotaz:

UPDATE `users` SET `test.sloupec`='xxx' WHERE (`users`.`id` = 6)

je chybny (test.sloupec neni v tabulce users).

A tedy k otazce: Jak z aktualniho kontextu $selection updatuji sloupec „sloupec“ v tabulce „test“?

Predem diky za odpoved

Mysteria
Člen | 797
+
0
-

Řekl bych že nijak, protože máš v něm máš jako základní tabulku users a nemůžeš (logicky) při updatu tabulky users měnit hodnotu sloupců jiné tabulky.

Azathoth
Člen | 495
+
0
-

Chápu to správně, že máš jednosměrný vztah, takže user neví o tom, v jakém je testu?
Pokud by user o testu věděl, tak by mělo fungovat to, že bys získal přes ref z usera test a ten bys potom upravil, ale takhle…to vypadá, že bys musel sáhnout do tabulky testů, vytahat všechny testy, které mají id požadovaného usera a ty teprve upravit…
Takže něco jako $selection->where(‚user-id‘, $id); a potom upravíš tu selection.

Editoval Azathoth (12. 9. 2014 0:12)

Caine
Člen | 216
+
+1
-

Co takhle nejak?

$user = $this->Db->table('users')->get($id);
$user->related('test')/*->where('asiNejakaPodminka?')*/->update(array("sloupec" => "nova_hodnota"));
makzak
Člen | 4
+
0
-

Azathoth: ano, user nevi o vztahu na test

Caine: diky, funguje