Как загрузить модель из пользовательской библиотеки в CodeIgniter, чтобы проверить, существуют ли значения в базе данных? - PullRequest
0 голосов
/ 13 февраля 2019

В настоящее время я работаю с API REST в CodeIgniter для отображения сведений о местоположении пользователя на основе его IP-адреса.Проблема в том, что если IP-адрес пользователя существует, он будет просто извлечен из таблицы базы данных.В противном случае, если IP-адрес пользователя новый, он будет вызван из ответа API REST и сохранен в таблице базы данных, чтобы минимизировать количество вызовов API

. Я уже пытался использовать API ipstack для полученияРезультаты и использовать их на контроллере и просматривать.Однако, если будет большое количество пользователей, запрос API будет ограничен, потому что я просто использую бесплатную версию API.Я также попытался создать таблицу базы данных, чтобы вставить значения, извлекаемые API, а затем просто выбрать значения, чтобы минимизировать вызовы API.Я также пытался создать собственную модель для вызова в библиотеке API, которую я создал для вызова через API, но когда я загружаю модель в библиотеку, она выдает мне ошибки.

Я создал таблицу user_location, чтобы сохранить значения, извлекаемые API, а затем отобразить их, чтобы минимизировать вызовы API.Here is the table that I created in order to save the fetched data being retrieved by the REST API

Вот мой код для пользовательской модели, которую я создал для сохранения и получения результатов API в базе данных:

class Ipstack_model extends CI_Model

{

function __construct()
{

    parent::__construct();
}

/*
    @Description : Select all the fields from the user_location table
    @Author      : Aristotle Doria
    @Output      :
    @Created Date: 13-02-2019
*/
function get_user_location($table)
{
    $this->db->select("*");
    $this->db->from($table);

    $query = $this->db->get();

    return $query->result();
}


/*
    @Description  : Insert values from the user_location table
    @Author       : Aristotle Doria
    @Output       :
    @Created Date : 13-02-2019 
*/
function insert_user_location($table, $data)
{
    $this->db->insert($table, $data);
}

}

Вотмой для библиотеки, которую я сделал для вызова API ipstack с помощью cURL.Я пытаюсь вызвать модель, которую я создал в библиотеке, чтобы проверить значения REST API в базе данных, но я немного застрял в этой части и выдавал некоторые ошибки .:

class Ipstack {

public function __construct()
{
    $CI =& get_instance();
}

public function fetch_location($ip_address)
{

    $CI->load->model('Ipstack_model');

    $this->db->where('user_ip_address', $ip_address);

    $query = $this->db->get('user_ip_address');

        if($query->num_rows() > 0)
        {
            $this->db->get_user_location();
        }
        else
        {
            //set IP address and API access key
            $ip = $_SERVER['REMOTE_ADDR'];
            if( ENVIRONMENT == 'local' ) $ip = '112.211.220.109';
            $access_key = 'e88d4f685c07d3dae06bd952cd7e3c62';
            $curl_url = 'http://api.ipstack.com/'.$ip.'?access_key='.$access_key.'';

            //Initialize CURL
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_URL, $curl_url);

            //store the data;
            $json = curl_exec($ch);
            curl_close($ch);
        }
            //Decode JSON response;
            $api_result = json_decode($json, true);
            return $api_result;
}

}

Вот ошибки, которые я получаю:

enter image description here enter image description here

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте это в своей библиотеке

$CI = & get_instance();

$CI->load->model('model_name');
$CI->model_name->method();

https://stackoverflow.com/a/6795969/6573970

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...