Sjednocení více table selection

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

Dobrý den,
potřeboval bych poradit, jak spojit více table selection v jednu, pro následovné využití foreach v template. … viz. příklad

$fdata = $this->context->database->table('users2')->select('cislo')->where('ID',$friends[0]);

for($i=1;$i < count($friends); $i++)
{
 $fdata .= $this->context->database->table('users2')->select('cislo')->where('ID',$friends[$i]);
}
$this->template->fData = $data;

.= rozhodně nefunguje a ve specifikaci nejspíš neumím hledat. Děkuji předem za pomoc!

Filip Procházka
Moderator | 4668
+
0
-

Velice špatně

$fdata = $this->context->database->table('users2')
	->select('cislo')->where('id IN (?)', $friends);
$this->template->fData = $data;
Drake
Člen | 13
+
0
-

Taky bych potřeboval sjednotit dvě selection, jenže jsou to dva dost odlišné a komplikované dotazy, které se navíc dynamicky generují, takže mě nenapadá jak to jednoduše spojit do jednoho dotazu jako to šlo výše. NotORM podporuje UNION, ale v knihovně Nette jsem to zatím nikde nenašel. Napadá někoho něco?

Filip Procházka
Moderator | 4668
+
0
-

Co takto nějak?

$a = $db->table('a')->where(...);
$b = $db->table('b')->where(...);
$result = $db->query('? UNION ?', $a, $b);
Drake
Člen | 13
+
0
-

Edit: Už to nepotřebuju, s Nette database jsem to vzdal a jdu na Dibi. Nejde jen o toto, ale i další věci, například jak vytvořit selection (kvůli dataGridu) pro spojení tabulek M:N. Ale díky za snahu o pomoc

Původní otázka:
Problém je, že to potřebuju pro dataGrid, který na vstupu bere Selection a query mi vrátí Statement, který se jen tak nedá na Selection převést. (DataGrid sice bere na vstup i PHPArray, ale to pak zas nejde filtrovat, což je zase problém)

Takže, lze nějak Unionem sjednotit dvě Selection, aby jako výsledek vznikla zase Selection?

Editoval Drake (22. 4. 2012 19:05)

sadamek
Člen | 16
+
0
-

Mám ještě problém, kdy pomocí foreache vypisuji data.

 {foreach $fData as $row}
<tr><td>{$row->cislo}</td></tr>
 {/foreach}

Vyhodí mě to hlášku
Invalid parameter number: number of bound variables does not match number of tokens

hrach
Člen | 1834
+
0
-

laděnku, verzi nette, atp.

sadamek
Člen | 16
+
0
-

Nette 2.0.3

Presenter:

$fpole = array(8,43);
$fdata = $this->context->database->table('users2')->select('ID, Firstname, Lastname')
                        ->where('ID IN (?)', $fpole);
$this->template->fdata = $fdata;

Template:

{foreach $fdata as $row}
    <tr>
        <td>{$row->Firstname} {$row->Lastname}</td>
    </tr>
 {/foreach}


Nette laděnka

PDOException #HY093

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

42:    <?php $iterations = 0; foreach ($fdata as $row): ?>
jtousek
Člen | 951
+
0
-

Zkus ->where(‚ID‘, $fpole);