Přidání dat do výsledků z databáze a PDOException
- matoni555
- Člen | 40
Ahoj,
v modelu Products používám funkci pro vrácení produktů. K jednotlivým
řádkům ve funkci process pak přidávám další data. Problém je,
že někdy mi to hodí PDOException: No reference found for
$products->isInAction zejména pokud smažu cache. Při dalším
obnovení stránky už to funguje.
V příkladu níže přidávám ke každému výsledku data (např. isInAction viz níže, ale i další).
Co dělám špatně, že to někdy háže tu vyjímku? Používám Nette\Database
Díky
Vrácení produktů:
public function getByCategories(array $categories)
{
$products = $this->connection->table($this->tableName)->where(...);
return $products;
}
Přidání dat:
public function process($products)
{
foreach ($products as $product) {
$product->isInAction = ...;
}
return $products;
}
Nasypání do šablony v presenteru:
$products = $this->context->products->getByCategories($categories);
$this->template->products = $this->context->products->process($products);
- Ivorius
- Nette Blogger | 119
Je to i v masteru, mám stejný problém – https://forum.nette.org/…odified-data
- Ivorius
- Nette Blogger | 119
Při nastavení cache na DevNullStorage (které se mi ale nepodařilo přepnout v configu) se ten problém nevyskytuje.
- jansfabik
- Člen | 193
Ten problém zřejmě souvisí s bugem #841.
@Ivorius: Pokud vím, tak ten kód, na který odkazuješ, vypíná cache u všech služeb (tedy i RobotLoader), což je fakt znát. Pokud chceš vypnout jenom cache u NDB, tak zkus přidat do config.neon toto:
services:
nette.database.default:
setup:
- setCacheStorage(NULL)
Osobně jsem ten drobný rozdíl ve výkonu skoro ani nepoznal. Teď mi takhle bez problému funguje i jeden web.