Nejlepší DB datasource pro Ublaboo datagrid?

Nax
Člen | 35
+
+1
-

Zdravím,

jelikož data která se mají zobrazovat v datagridu jsou uložené v tabulkách jenž jsou spojované pomocí M:N relací, přijde mi na to Nette database explorer strašně neohebný. Nevim jestli mi něco uniká, každopádně například při sortění mi přijde skoro nemožné naimplementovat si pomocí Exploreru vlastní sortění, či filtrování pomocí multiselectu.

Konkrétně mi jde o to, že mám tabulku contracts a s ním pomocí joinovací tabulky propojené 1 smluvní stranu, která muže mít více účastníků, tedy chci-li v datagridu zobrazit jména na jedné smluvní straně, udělám toto (což mi ještě přijde relativně hezké)

$grid->addColumnText('contractor_name', 'Dodavatel')
    ->setRenderer(function (ActiveRow $item) {
        $names = [];
        foreach ($item->related('contracting_party_contract')
                      ->where('contracting_side = ?', 0) as $join) {
            $names[] = $join->contracting_party->name;
        }
        return implode(", ", $names);
    })

Nicméně nastává problém pri filtrování. Chci filtrovat multiselectem podle jména, a to se u ublaboo datagridu co jsem tak vykoukal řeší takto:

$grid->addColumnText('contractor_name', 'Dodavatel')
    ->setRenderer(function (ActiveRow $item) {
        $names = [];
        foreach ($item->related('contracting_party_contract')
                     ->where('contracting_side = ?', 0) as $join) {
             $names[] = $join->contracting_party->name;
        }
        return implode(", ", $names);
    })->setFilterMultiSelect([zde hodnoty do multiselectu])
    ->setCondition(function (Selection $dataSource, array $value) {
            // Zde musím upravit $dataSource tak, aby mi vyfiltroval jmena podle hodnot v poli $value
    });

Neumím ale pomocí Database Exploreru $dataSource upravit tak, jak jsem to napsal v komentáři v setCondition.

Jde to nějak řešit pomocí Exploreru, nebo jaký by jste mi doporučili datasource?

Díky