dotaz na databazi → array | pri necachovnem nacteni hazi PDOException

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
simPod
Člen | 383
+
0
-

tohle mam v modelu (zjednosena verze)

function productSearch($query){
        $sql = $this->getProducts()->where('product_name LIKE ?', '%' . $query . '%');
        $sql2 = $this->getProducts()->where('product_desc LIKE ?', '%' . $query . '%');
        $sql3 = $this->getProducts()->where('product_sku LIKE ?', '%' . $query . '%');

        $array = array();
        foreach ($sql as $sq) {
            array_push($array, $sq);
        }
        foreach ($sql2 as $sq) {
            array_push($array, $sq);
        }
        foreach ($sql3 as $sq) {
            array_push($array, $sq);
        }
        $array = array_unique($array);
        return $array;
}

vysledne pole se vrati do presenteru, to se preda do templatu, kde se to pomoci {foreach $products as $product} projde

ovsem kdyz pouziju jakekoliv vypsani promenne, napr. {$product->product_id}, tak mi to vyhodi chybu: PDOException No reference found for $products->product_id.. Ovsem ta chyba se zobrazi jen pri prvnim nacteni. Kdyz se to zcachuje, tak po reloadu stranky funguje bez problemu.

Kdyz potom smazu cache, tak to zas vyhodi chybu.

Cim to muze byt? diky

jtousek
Člen | 951
+
0
-

Verze Nette? Zkoušels nejnovější revizi z GitHubu?

simPod
Člen | 383
+
0
-

jo, dela to i ta verze na githubu (nette-nette-v2.0.0–240-ga6b1f7f)

simPod
Člen | 383
+
0
-

dela to jen kdyz si s tim pak hraju jako s array, s normalnimi sql dotazy to nedela…

nenapada nekoho co s tim?

bojovyletoun
Člen | 667
+
0
-

Funkce getProducts vytváří novou Selection, nebo vrací pořád stejný objekt? Problém může být v tom, že jestli stejný objekt, pak se voláním where mění i původní objekt… Zkusil bych tedy clone… Více viz zde

Editoval bojovyletoun (12. 6. 2012 20:08)

simPod
Člen | 383
+
0
-

ja zapomnel uvest fuknci getProducts() :/

vypada takto:

function getProducts() {
        return $this->connection->table('products')->where(array(
                    'product_published' => 1
                ))->order('product_name');
    }

takze dela novou Selection

simPod
Člen | 383
+
0
-

provizorne jsem to vyresil prevedenim objektu selection na array

...
foreach ($sql as $sq) {
      array_push($array, $this->arrayConversion($}
}
...
$array = array_unique($array, SORT_REGULAR);
...