Gridito, ambiguous id, nejdnoznačné id, prosím o pomoc

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

Zdravím,

Jendá se o Gridito (falešný datagrid) od Jana Marka

$grid->setModel(new \Gridito\DibiFluentModel(
   $db->select('m.*')->from('::mistnosti m')->where("uz.uzivatele_id = %i AND uz.zarizeni_id = %i", $userId, $restaurantId)
   ->leftJoin('::zarizeni z')->on('m.zarizeni_id = z.id')
   ->leftJoin('::uzivatelska_zarizeni uz')->on('z.id = uz.zarizeni_id')
 ));
Při akci delete mi to z nepochopitelného důvodu přidá za tento dotaz k gridu 'id' = nejake id, Jak to mám napravit? Obdržuju hlášku mysql že id je nejednoznačné což je pochopitelné.
	$grid->addButton("delete", "Smazat", array(
    "handler" => function($row) use ($grid){
        $OfficeModel = new \Model\Office;
        //Debug::dump($contractModel);
        //$contractModel->deleteContract($row->id);
        if($OfficeModel->deleteRoom($row->id)){
          $grid->flashMessage("Místnost byla úspěšně odstraněna.", "success");
        }
        else{
          $grid->flashMessage("Nebylo možné dokončit operaci, zkuste to prosím znovu.", "error");
        }
        $grid->redirect("this");
    },
    "icon" => "ui-icon-closethick",
    "confirmationQuestion" => function ($grid) {
            return "Opravdu smazat místnost? (může obsahovat stoly k rezervacím)";
    },
    "showText" => false
));
Dotaz pak vypadá k mému nepotěšení takto:
SELECT m.*
FROM mistnosti m
LEFT JOIN zarizeni z ON m.zarizeni_id = z.id
LEFT JOIN uzivatelska_zarizeni uz ON z.id = uz.zarizeni_id
WHERE uz.uzivatele_id = 3 AND uz.zarizeni_id = 1 AND `id` = 3
Column 'id' in where clause is ambiguous

Díky moc za pomoc, nevím co s tím

Editoval demonic (12. 9. 2011 13:55)

lumen
Člen | 32
+
0
-

Ahoj, v poslední době jsem se zaseknul na úplně stejném problému a nedaří se mi to nijak rozumně řešit. Zatím jsem jen přejmenovával sloupce v DB, ale toto není zrovná to pravé ořechové:)

Nemáte někdo lepší řešení?

mm-marek
Člen | 61
+
0
-

SELECT AS… nebo nevybírat všechny sloupce přes *

Není to problém giridita, prostě musíte vybrat data tak, aby to bylo jednoznačné :)