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