【发布时间】:2019-07-25 15:32:35
【问题描述】:
我有一个 Codeigniter 应用程序在浏览器中运行良好,但我很难让任何东西在命令行上正常运行。以下 sn-p 是我的控制器中的内容:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Followers extends CI_Controller {
public function process()
{
echo ENVIRONMENT.PHP_EOL;
$this->db->select('n.`id`, n.`name`');
$this->db->from('`table` n');
$this->db->where('n.`active` = 1');
$query = $this->db->get();
$results = $query->result_array();
}
}
我运行如下:
php index.php cli followers process
并获得以下信息:
development
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Followers::$db
Filename: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/application/controllers/cli/Followers.php
Line Number: 14
Backtrace:
File: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/application/controllers/cli/Followers.php
Line: 14
Function: _error_handler
File: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/index.php
Line: 343
Function: require_once
An uncaught Exception was encountered
Type: Error
Message: Call to a member function select() on null
Filename: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/application/controllers/cli/Followers.php
Line Number: 14
Backtrace:
File: /Users/neilthompson/Dropbox/Development/MAMP/htdocs/app/index.php
Line: 343
Function: require_once
我明白错误在说什么,但不知道如何解决它!
我在自动加载文件中有以下内容:
$autoload['libraries'] = array('database', 'smartie' => 'smarty', 'session');
我必须做什么才能访问数据库?
【问题讨论】:
-
你为什么在控制器中使用查询?你的模型在哪里,这不是使用框架标准的好方法
-
您通过
php index.php cli followers process错误地运行了您的方法。通过 CLI 运行时,您应该执行php index.php controller method "args"。你这样做的方式,codeigniter 寻找一个名为cli的控制器,它不存在 -
@JavierLarroulet 控制器位于名为“cli”的子文件夹中,这就是它的原因。
-
@devpro 我搬到了一个模型并做了 $this->load->model('Followers');现在错误是“未定义的属性:Followers::$load”。因此,虽然您是对的,使用模型是正确的方法,但实际上转向模型对根本问题没有影响。
标签: php mysql codeigniter command-line-interface codeigniter-3