/**
 * 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;
 }