CommonDBTM::getSearchOptionByField PHP Метод

getSearchOptionByField() публичный Метод

Return a search option by looking for a value of a specific field and maybe a specific table
public getSearchOptionByField ( $field, $value, $table = '' ) : then
$field the field in which looking for the value (for example : table, name, etc)
$value the value to look for in the field
$table the table (default '')
Результат then search option array, or an empty array if not found
    function getSearchOptionByField($field, $value, $table = '')
    {
        foreach ($this->getSearchOptions() as $id => $searchOption) {
            if (isset($searchOption['linkfield']) && $searchOption['linkfield'] == $value || isset($searchOption[$field]) && $searchOption[$field] == $value) {
                if ($table == '' || $table != '' && $searchOption['table'] == $table) {
                    // Set ID ;
                    $searchOption['id'] = $id;
                    return $searchOption;
                }
            }
        }
        return array();
    }

Usage Example

 /**
  * Contruct parameters restriction for listInventoryObjects sql request
  *
  * @param $params          the input parameters
  * @param $item            CommonDBTM object
  * @param $table
  * @param $already_joined
  **/
 static function listInventoryObjectsRequestLeftJoins($params, CommonDBTM $item, $table, $already_joined)
 {
     $join = "";
     $already_joined = array();
     foreach ($params as $key => $value) {
         //Key representing the FK associated with the _name value
         $key_transformed = preg_replace("/_name/", "s_id", $key);
         $option = $item->getSearchOptionByField('field', $key_transformed);
         if (!empty($option) && !isset($option['common']) && $table != $option['table'] && !in_array($option['table'], $already_joined)) {
             $join .= " \nINNER JOIN `" . Toolbox::addslashes_deep($option['table']) . "`\n                           ON (`" . Toolbox::addslashes_deep($table) . "`.`" . Toolbox::addslashes_deep($option['linkfield']) . "`\n                                 = `" . Toolbox::addslashes_deep($option['table']) . "`.`id`) ";
             $already_joined[] = $option['table'];
         }
     }
     return $join;
 }
CommonDBTM