Ordering and search, no pagination yet
This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user