Nette\Database – chybná invalidace cache sloupců
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Filip Procházka
- Moderator | 4668
Nette\Database
špatně invaliduje cache, párkrát přistoupím
k některým sloupcům a pak mi vyhazuje
throw new \PDOException("No reference found for \${$table}->{$key}.");
z DiscoveryReflection
, že jiné sloupce nezná.
$db = $this->context->database;
foreach ($db->table('gallery') as $gallery) {
dump(array('gallery' => $gallery->name));
foreach ($gallery->related('gallery_image') as $img) {
dump(array('desc' => $img->description));
// dump(array('book' => $img->in_book));
}
}
CREATE TABLE `gallery` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `gallery_image` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`gallery_id` int(11) NOT NULL,
`in_book` tinyint(4) NOT NULL DEFAULT '0',
`description` text NOT NULL,
PRIMARY KEY (`id`),
KEY `gallery_id` (`gallery_id`),
CONSTRAINT `gallery_image_ibfk_1` FOREIGN KEY (`gallery_id`) REFERENCES `gallery` (`id`)
) ENGINE=InnoDB;
INSERT INTO `gallery` (`id`, `name`) VALUES (1, 'Plavky'), (3, 'Zima'), (5, 'Jen tak');
INSERT INTO `gallery_image` (`id`, `gallery_id`, `in_book`, `description`) VALUES
(21, 1, 1, 'plavky'),
(33, 3, 1, 'sit'),
(34, 5, 0, 'amet'),
(35, 5, 0, 'kontesq'),
(36, 5, 0, 'blabla'),
(37, 5, 0, 'jedna'),
(38, 5, 0, 'dva'),
(39, 5, 0, 'tri'),
(40, 3, 0, 'finish');
Párkrát to spustím, uloží se cache, pak odkomentuju řádek a vyskočí chyba.
Editoval HosipLan (16. 3. 2012 17:12)
- Filip Procházka
- Moderator | 4668
da24b6f
PDOException No reference found for $gallery_image->is_book.
Editoval HosipLan (16. 3. 2012 11:28)
- Filip Procházka
- Moderator | 4668
To jsem se jenom upsal, ale díky za upozornění.
Přidám tedy ještě i laděnku. http://www.kdyby.org/…ception.html
Editoval HosipLan (16. 3. 2012 17:18)