public static function selectByIds($ids, array $options = [], array $criteria = [])
    {
        $criteria = static::cleanCriteria($criteria);
        if (empty($criteria)) {
            $criteria['select'] = ['*'];
        }

        if (is_array($ids)) {
            $ids = implode(',', $ids);
        }

        $pk = static::getPrimaryKeyStatic();
        if (!empty($ids)) {
            $idsPhrase = " $pk IN ($ids) ";

            $condition = array_get($criteria, 'condition');

            if (!empty($condition)) {
                $condition .= ' AND ' . $idsPhrase;
            } else {
                $condition = $idsPhrase;
            }

            $criteria['condition'] = $condition;
        }

        $data = static::selectByRequest($criteria, $options);

        $data = static::cleanResult($data, array_get($criteria, 'select'));
        if (!is_array($ids)) {
            $ids = explode(',', $ids);
        }
        if (count($data) != count($ids)) {
            $out = [];
            $continue = array_get_bool($options, ApiOptions::CONTINUES);
            foreach ($ids as $index => $id) {
                $found = false;
                foreach ($data as $record) {
                    if ($id == array_get($record, $pk)) {
                        $out[$index] = $record;
                        $found = true;
                        break;
                    }
                }
                if (!$found) {
                    $out[$index] = new NotFoundException("Record with identifier '$id' not found.");
                    if (!$continue) {
                        break;
                    }
                }
            }

            throw new BatchException($out, 'Batch Error: Not all requested records could be retrieved.');
        }

        return $data;
    }
public static function selectByIds($ids, array $options = [], array $criteria = [])
    {
        $criteria = static::cleanCriteria($criteria);
        if (empty($criteria)) {
            $criteria['select'] = ['*'];
        }

        if (is_array($ids)) {
            $ids = implode(',', $ids);
        }

        $pk = static::getPrimaryKeyStatic();
        if (!empty($ids)) {
            $idsPhrase = " $pk IN ($ids) ";

            $condition = array_get($criteria, 'condition');

            if (!empty($condition)) {
                $condition .= ' AND ' . $idsPhrase;
            } else {
                $condition = $idsPhrase;
            }

            $criteria['condition'] = $condition;
        }

        $data = static::selectByRequest($criteria, $options);

        $data = static::cleanResult($data, array_get($criteria, 'select'));
        if (!is_array($ids)) {
            $ids = explode(',', $ids);
        }
        if (count($data) != count($ids)) {
            $out = [];
            $continue = array_get_bool($options, ApiOptions::CONTINUES);
            foreach ($ids as $index => $id) {
                $found = false;
                foreach ($data as $record) {
                    if ($id == array_get($record, $pk)) {
                        $out[$index] = $record;
                        $found = true;
                        break;
                    }
                }
                if (!$found) {
                    $out[$index] = new NotFoundException("Record with identifier '$id' not found.");
                    if (!$continue) {
                        break;
                    }
                }
            }

            throw new BatchException($out, 'Batch Error: Not all requested records could be retrieved.');
        }

        return $data;
    }
public static function selectByIds ( $ ids , array $ options = [ ] , array $ criteria = [ ] ) { $ criteria = static :: cleanCriteria ( $ criteria ) ; if ( empty ( $ criteria ) ) { $ criteria [ 'select' ] = [ '*' ] ; } if ( is_array ( $ ids ) ) { $ ids = implode ( ',' , $ ids ) ; } $ pk = static :: getPrimaryKeyStatic ( ) ; if ( ! empty ( $ ids ) ) { $ idsPhrase = " $pk IN ($ids) " ; $ condition = array_get ( $ criteria , 'condition' ) ; if ( ! empty ( $ condition ) ) { $ condition .= ' AND ' . $ idsPhrase ; } else { $ condition = $ idsPhrase ; } $ criteria [ 'condition' ] = $ condition ; } $ data = static :: selectByRequest ( $ criteria , $ options ) ; $ data = static :: cleanResult ( $ data , array_get ( $ criteria , 'select' ) ) ; if ( ! is_array ( $ ids ) ) { $ ids = explode ( ',' , $ ids ) ; } if ( count ( $ data ) != count ( $ ids ) ) { $ out = [ ] ; $ continue = array_get_bool ( $ options , ApiOptions :: CONTINUES ) ; foreach ( $ ids as $ index => $ id ) { $ found = false ; foreach ( $ data as $ record ) { if ( $ id == array_get ( $ record , $ pk ) ) { $ out [ $ index ] = $ record ; $ found = true ; break ; } } if ( ! $ found ) { $ out [ $ index ] = new NotFoundException ( "Record with identifier '$id' not found." ) ; if ( ! $ continue ) { break ; } } } throw new BatchException ( $ out , 'Batch Error: Not all requested records could be retrieved.' ) ; } return $ data ; }
Selects records by multiple ids.

@param string|array $ids
@param array        $options
@param array        $criteria

@return mixed
@throws BatchException
Selects records by multiple ids .