Sjednocení více table selection
- sadamek
- Člen | 16
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
Velice špatně
$fdata = $this->context->database->table('users2')
->select('cislo')->where('id IN (?)', $friends);
$this->template->fData = $data;
- Drake
- Člen | 13
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
Co takto nějak?
$a = $db->table('a')->where(...);
$b = $db->table('b')->where(...);
$result = $db->query('? UNION ?', $a, $b);
- Drake
- Člen | 13
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
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): ?>