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

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
Moderator | 1283
+
0
-

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

Milo
Moderator | 1283
+
0
-

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

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

RSS tématu Téma zavřeno