NDB a update nad řádkem se složeným primárním klíčem

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

Zdravím

Mám tabulku se složeným primárním klíčem

CREATE TABLE `akce_rating_member` (
  `akce_id` smallint(5) unsigned NOT NULL,
  `member_id` smallint(5) unsigned NOT NULL,
  `rating` tinyint(3) unsigned NOT NULL,
  `message` text collate utf8_czech_ci,
  `anonymous` tinyint(1) unsigned NOT NULL default '0',
  `date_add` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`akce_id`,`member_id`),
  KEY `akce_id` (`akce_id`),
  KEY `member_id` (`member_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

Pokud se pokusím o následující:

<?php
$row = $database->table('akce_rating_member')->get(24,10); //tohle funguje
$row->update($values); //tohle hodí chybu
?>

Dostanu Nette\InvalidStateException protože prý „Row does not contain primary id column data.

Pokud si ale nechám $row vypsat, tak oba sloupce tvořící klíč tam jsou.

Používám conventional reflection. Tuším, že chyba bude někde v tom jak NDB tvoří primární klíče, ale nevím co s tím. Zatím to řeším přes exec('UPDATE ...'), ale nepřijde mi to jako systémové řešení problému.

Má někdo nápad, jak to opravit? Díky.

PHP 5.3 NetteFramework 2.0.10 5.3 Stable

Editoval Richard Faila (29. 5. 2013 17:12)

Milo
Nette Core | 1283
+
0
-

Použij DiscoveredReflection pokud můžeš. ConventionalReflection očekává jako primární klíč id. To je ta konvence.

Milo
Nette Core | 1283
+
0
-

A pokud nemůžeš, poděď si ji a uprav getPrimary().

Editoval Milo (29. 5. 2013 17:30)