1

标题几乎概括了它。我想编写一个脚本来从第三方导入一些数据。有什么方法可以获取 CodeIgniter 的 Active Record 类的实例,或者可以从命令行运行的脚本中的特定模型?

4

2 回答 2

2

假设您在其中有您的 CodeIgnited 应用程序ignited/,您有您的命令行脚本在其中运行cli/。这是您的文件夹布局:

ignited/
    application/
    system/
    index.php
cli/
    mycli.php

现在你想cli/mycli.php使用一些模型ignited/

首先,你应该对你的ignited应用做一些事情:

  1. 修改您的默认控制器(在 中设置ignited/application/config/routes.php)。例如ignited/application/controllers/welcome.php

    class Welcome extends CI_Controller {
    
        public function index()
        {
            $this->load->view('welcome_message');
        }
    }
    

    添加这些代码:

    if ($this->input->is_cli_request())
    {
        return;
    }
    

    所以它看起来像:

    class Welcome extends CI_Controller {
    
        public function index()
        {
            if ($this->input->is_cli_request())
            {
                return;
            }
            $this->load->view('welcome_message');
        }
    }
    
  2. 为了测试,我创建了一个测试模型ignited/application/models/do_nothing_model.php

    class Do_nothing_model extends CI_Model {
    
        public function __construct()
        {
            parent::__construct();
        }
    
        public function do_nothing()
        {
            return "Do nothing";
        }
    
    }
    

好的!现在试试这个cli/mycli.php

require_once('../ignited/index.php');

$ci =& get_instance();

$ci->load->model('do_nothing_model');
echo $ci->do_nothing_model->do_nothing();

Drawback: unable to run the default action of your default controller in command line

UPDATE 2012-06-08: from CodeIgniter Wiki

于 2012-06-01T16:19:47.013 回答
0

不确定这是否是您想要的,但如果您只需要从 CLI 运行 CI,这里是用户指南参考:

http://codeigniter.com/user_guide/general/cli.html

澄清一下,您不需要它面向网络,只需设置您的应用程序并运行您需要的命令(控制器方法输入):

$ php index.php tools message "John Smith"

该示例将运行 CI 的主index.php文件,然后是tools控制器和方法message,“John Smith”是您对消息的输入(可以是机器上用于文件导入的本地文件引用)。

于 2012-06-01T14:18:55.950 回答