Opakované použití Nette\Database\Table\Selection::update()
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- fary
- Člen | 155
Nevím, jestli něco nedělám špatně, ale když zapíšu:
Mám SQL:
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `users` (`id`, `name`) VALUES
(1, 'Nobody 1'),
(2, 'Nobody 2');
Pak mám PHP: ($table je
Nette\Database\Table\Selection)
$res = $table->wherePrimary(1)->update(array('name', 'John Doe'));
echo $res > 0 ? 'OK' : 'Fail'; // OK
$res = $table->wherePrimary(2)->update(array('name', 'Jane Doe'));
echo $res > 0 ? 'OK' : 'Fail'; // Fail
V prvním případě se vypíše OK, ve druhém
Fail v případě, že $table je stejná instance
jako v prvním případě. Nevím jestli něco nedělám špatně, ale myslím,
že v obou případech by se mělo vypsat OK.

- David Matějka
- Moderator | 6445
Vsechny where se do selection pridavaji, selection je (vetsinou) jen pro
jeden dotaz. Bud tedy pouzij nove selection, nebo zavolej metodu
get(1), ktera vrati odpovidajici ActiveRow, aniz by to ovlivnilo
puvodni selection
Editoval matej21 (17. 5. 2014 23:33)

- fary
- Člen | 155
Díky. Udělal jsem si metodu getTable() díky které mohu
použít:
$res = getTable()->wherePrimary(1)->update(array('name', 'John Doe'));
echo $res > 0 ? 'OK' : 'Fail'; // OK
$res = getTable()->wherePrimary(2)->update(array('name', 'Jane Doe'));
echo $res > 0 ? 'OK' : 'Fail'; // OK