Zjednotenie dvoch vysledkov z DB

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

Zdravím,

mám dve funkcie v odvodenej triede z triedy Repository, ktoré mi vracajú výsledky z databázy (objekt Nette\Database\Table\Selection)

<?php
public function getMainCategories();
public function getSubCategories($parent = 0);
?>

V Presenteri by som chcel do jednej premennej priradiť zjednotenie týchto dvoch výsledkov. Skúšal som to urobiť spôsobom priradenie k existujúcemu polu.

<?php
 $tags = $this->categories->getMainCategories()->where(array("tag" => 1))->order("id ASC");
 $tags[] = $this->categories->getSubCategories()->where(array("tag" => 1))->order("id ASC");
 $this->template->tags = $tags;
?>

Nanešťastie v premennej $this->template->tags mi zostanú iba výsledky z prvého dopytu. Môžete mi pomôcť ako na to, prípadne aj vysvetliť, že prečo je moja idea zlá?

Ďakujem

Editoval gogy27 (3. 2. 2014 13:42)

David Matějka
Moderator | 6445
+
0
-

jak pises, vraci se ti Nette\Database\Table\Selection, coz je Iterator objekt, pokud s nim chces pracovat jako s polem, musis to pomoci funkce iterator_to_array prevest na pole – pak oba vysledky spojis treba pomoci array_merge

pripadne muzes pouzit treba AppendIterator

$tags = new \AppendIterator();
$tags->append($this->categories->getMainCategories() .....);
$tags->append($this->categories->getSubCategories() ....);

$this->template->tags = $tags;
gogy27
Člen | 6
+
0
-

Ďakujem za pomoc :)