Related v kombinaci s order
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Kakaku
- Člen | 27
Zdravím,
řeším problém. Využívám nextras datagrid, přičemž vypisuju seznam
zákazníků. Nyní si klient přeje, aby spolu s výpisem zákazníka se
vypsal i komulativní součet (což je obrat za poslední rok).
To jsem vyřešil, ale zákazník chce, aby se podle komulativního součtu dalo
řadit. Ale já nevím, jak mám u toho related řadit. Myslím, že bych měl
něco doplnit do té podmínky if($order[0] == „comulative_count“), ale
opravdu netuším co.
{define col-comulative_count}
<td>
{var $comulative_row = $row->related('customers_yeardata.customer_id')->where("year", date("Y", time()))->fetch()}
{ifset $comulative_row->value}
{$comulative_row->value|number:0:',':' '} Kč
{else}
-
{/ifset}
</td>
{/define}
Data vybírám v CustomersManageru:
if($order[0] == "OZ_lastname")
$order[0] = "OZ_id.lastname";
$filters = array();
if (isset($filter['authorized_OR'])) {
if ($filter['authorized_OR'] == 3)
unset($filter['authorized_OR']);
}
if (isset($filter['whereOr']['OZ_ids'])) {
$whereOr['OZ_id'] = $filter['whereOr']['OZ_ids'];
}
unset($filter['whereOr']);
if (isset($filter['SAP_number'])) {
if ($filter['SAP_number'] == "-")
$filter['SAP_number'] = 0;
}
foreach ($filter as $k => $v) {
if (in_array($k, $strictColumns, true) || is_array($v))
$filters[$k] = $v;
elseif (in_array($k, $beginSearchColumns))
$filters[$k . ' LIKE ?'] = "$v%";
elseif(in_array($k, $moreThanColumns))
$filters[$k . '>= ?'] = $v;
else
$filters[$k . ' LIKE ?'] = "%$v%";
}
$selection = $this->getAllCustomers()->where($filters);
if (isset($whereOr)) {
$selection->whereOr($whereOr);
}
if($order[0] == "comulative_count")
{
//TADY ASI NĚCO DOPLNIT
}
elseif ($order[0])
$selection->order(implode(' ', $order));
else {
$selection->order(self::COLUMN_CUSTOMER_CATEGORY . " ASC, " . self::COLUMN_COMPANY_NAME . " ASC");
}
return $selection;
Za jakoukoli nápovědu budu vděčný