Ordering and search, no pagination yet

This commit is contained in:
2023-10-31 23:25:42 +01:00
parent 6d03c99a34
commit 3f72ee89ca
30 changed files with 466 additions and 107 deletions

View File

@ -18,6 +18,23 @@ use Joomla\Database\ParameterType;
class StocksModel extends ListModel
{
public function __construct($config = [])
{
$config['filter_fields'] = [
'id',
's.id',
's.name',
'name',
'alias',
's.alias',
's.description',
'description',
'published',
'd.published',
'owner',
];
parent::__construct($config);
}
/**
* Build an SQL query to load the list data.
*
@ -55,10 +72,13 @@ class StocksModel extends ListModel
->select(
[
$db->quoteName('u.name', 'creator'),
$db->quoteName('o.name', 'owner'),
$db->quoteName('o.username', 'owner_username'),
]
)
->from($db->quoteName('#__depot_stock', 's'))
->join('LEFT', $db->quoteName('#__users', 'u'), $db->quoteName('u.id') . ' = ' . $db->quoteName('s.checked_out'));
->join('LEFT', $db->quoteName('#__users', 'u'), $db->quoteName('u.id') . ' = ' . $db->quoteName('s.checked_out'))
->join('LEFT', $db->quoteName('#__users', 'o'), $db->quoteName('o.id') . ' = ' . $db->quoteName('s.owner_id'));
// filter: like / search
$search = $this->getState('filter.search');
if (!empty($search)) {
@ -77,6 +97,11 @@ class StocksModel extends ListModel
$query->where($db->quoteName('s.state') . ' IN (0, 1)');
}
// add list ordering clause
$orderCol = $this->state->get('list.ordering', 'id');
$orderDirn = $this->state->get('list.direction', 'asc');
$query->order($db->escape($orderCol) . ' ' . $db->escape($orderDirn));
return $query;
}
}