/** * desc Pallet; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | objectID | bigint(20) | NO | PRI | 0 | | | Pallet_ID | varchar(85) | NO | MUL | | | | x | varchar(85) | NO | | | | | y | varchar(85) | NO | | | | | z | varchar(85) | NO | | | | | Status | varchar(85) | NO | | | | +-----------+-------------+------+-----+---------+-------+ 6 rows in set (0.01 sec) * @param $filter * @return mixed */ protected function rawFilter($filter) { //Log::debug('query: ',$filter); // Build a query based on filter $filter $query = Pallet::query()->select('Pallet.objectID', 'Pallet.Pallet_ID', 'Pallet.x', 'Pallet.y', 'Pallet.z', 'Pallet.Status')->orderBy('Pallet_ID', 'asc'); if (isset($filter['Pallet_ID']) && strlen($filter['Pallet_ID']) > 2) { $query->where('Pallet_ID', 'like', ltrim($filter['Pallet_ID'], '0') . '%'); } if (isset($filter['Pallet_ID.prefix']) && is_array($filter['Pallet_ID.prefix'])) { $query->whereRaw("substring(Pallet_ID,1,3) in ('" . implode("','", $filter['Pallet_ID.prefix']) . "')"); } if (isset($filter['Status']) && is_array($filter['Status'])) { $query->whereRaw("Status in ('" . implode("','", $filter['Status']) . "')"); } elseif (isset($filter['Status']) && strlen($filter['Status']) > 3) { $query->where('Status', '=', $filter['Status']); } /* * container.parent should generate this sql request * select Pallet.* from Pallet join container plt on plt.objectID = Pallet.objectID where plt.parentID = 6213292055; */ if (isset($filter['container.parent']) && strlen($filter['container.parent']) > 3) { $query->join('container as plt', 'plt.objectID', '=', 'Pallet.objectID')->where('plt.parentID', $filter['container.parent']); } /* * container.child should generate this sql request * select Pallet.* from Pallet join container gc on gc.parentID = Pallet.objectID where gc.objectID = 6226111054; */ if (isset($filter['container.child']) && strlen($filter['container.child']) > 3) { $query->join('container as gc', 'gc.parentID', '=', 'Pallet.objectID')->where('gc.objectID', $filter['container.child']); } return $query; }