参数化一个值以在同一个类

时间:2016-03-03 06:45:16

标签: php codeigniter

我正在尝试使用log_tb类中的set_log()方法在User_model表中插入数据。但我似乎无法使其工作,因为我将用户ID参数化为set_log()的方式进行思考(即使我将$config['log_threshold']设置为{{1}也没有错误显示在config.php中)。

用户ID来自4方法的查询,并使用get_user运行结果以获取用户ID。

看看下面的课程:

foreach()

如何从class User_model extends CI_Model { public function __construct() { $this->load->database(); } public function set_log($userid) /* INSERT METHOD */ { $date = date('Y-m-d H:i:s'); /* GET THE DATE AND TIME */ $data = array( 'user_id' => $userid, 'log_date' => $date ); return $this->db->insert('log_tb', $data); /* INSERT THE DATA TO log_tb */ } public function get_user($pinno = FALSE) { if ($pinno === FALSE) { $query = $this->db->get('user_tb'); return $query->result_array(); } $query = $this->db->get_where('user_tb', array('pin_no' => $pinno)); foreach($query->result() as $query_item) /* RUN THROUGH THE RESULT */ { $this->User_model->set_log($query_item["user_id"]); /* GET THE USER ID AND PARAMETERIZE IT TO set_log METHOD */ } return $query->row_array(); } } 变量中获取用户ID,使其成为$query方法的参数?这是对这种逻辑的正确方法吗?或者我应该拨打外面的set_log()吗?

2 个答案:

答案 0 :(得分:1)

因为你使用$ query->结果结果是一个对象试试这个

public function get_user($pinno = FALSE)
{
    if ($pinno === FALSE)
    {
        $query = $this->db->get('user_tb');
        return $query->result_array();
    }

    $query = $this->db->get_where('user_tb', array('pin_no' => $pinno));

    foreach($query->result_array() as $query_item) /* RUN THROUGH THE RESULT */
    {
        $this->set_log($query_item['user_id']); /* GET THE USER ID AND PARAMETERIZE IT TO set_log METHOD */
    }

    return $query->result_array();

}

答案 1 :(得分:1)

在此函数get_user()中,您使用$query->result()获取用户ID为$query_item["user_id"],它将返回对象形式的结果而不是数组。

修改功能:

public function get_user($pinno = FALSE)
{
    if ($pinno === FALSE)
    {
        $query = $this->db->get('user_tb');
        return $query->result_array();
    }

    $query = $this->db->get_where('user_tb', array('pin_no' => $pinno));

    foreach($query->result() as $query_item) /* RUN THROUGH THE RESULT */
    {
        $this->User_model->set_log($query_item->user_id); /* GET THE USER ID AND PARAMETERIZE IT TO set_log METHOD */
    }

    return $query->row_array();

}

有两种解决方案:

解决方案1:

如果你想使用

$query->result()

比你需要使用userid,如:

$query_item->user_id // as property in foreach() body

解决方案2:

如果你想使用

$query->result_array()

无需更改foreach()正文中的任何内容:

$query_item["user_id"] // as array index