nette\database chyba se zaplou cache
- Ani
- Člen | 226
Ahoj,
mám tu klasickou vazbu M:N
deepsky (id, name …)
deepsky_image (deepsky_id, image_id)
image (id, name …)
<?php
foreach ($this->model->database->table('deepsky')->get(10342)->related('deepsky_image')->limit($paginator->itemsPerPage, $paginator->offset) as $rel){
$images[] = $rel->image;
}
?>
Problém je že při zaplé cache, kód proběhne jen na první pokus při dalším pokusu skončí na $images[] = $rel->image; viz http://eburda.eu/exception.html
Problém s cache je to určitě protože při smazání $service->setCacheStorage($this->cacheStorage); z configuratoru to funguje ok.
Nette dnes stažené z gitu.
- Ani
- Člen | 226
V nejnovějším to také nefunguje, totožná chyba.
Co jsem koukal na ty commity, tak mi přijde že jsi to opravil, ale ty dva další commity to zase rozbily. Bohužel teď nevím jak si stáhnout konkrétní revizi z gitu (abych vyzkoušel jestli to tak bylo opravdu), případně to večer vyzkouším.
- hrach
- Člen | 1838
Ha, to vyzkousim a zkusim navrhnout opravu, aby to vyhazovalo nejakou smysluplnou chybu. Kazdoapdne na vazebni tabulkce primarni klic byt nemusi. Respektive pokud nema ani jeden sloupec primarni klic, vraci databaze oznaceni jako primarni na vsechny sloupce – a tak to funguje myslim dobre.
- Ani
- Člen | 226
Trochu jsem to ještě zkoušel a chová se to zvláštně.
Následujicí kód:
<?php
$tags = array();
foreach ($this->context->database->table('book_tag')->where('book_id', 1)->limit(5, 0) as $rel){
$tags[] = $rel->tag;
}
?>
Když mám ve vazební INDEX (book_id) a INDEX (tag_id) žádný primary, tak každý refresh stránky položí jiné dotazy :) Jednou skončí erorrem, podruhé ne.
Když mám PRIMARY (book_id, tag_id) funguje OK
Editoval Ani (30. 1. 2012 17:54)