【问题标题】:Accessing a variable of an object using dynamic value使用动态值访问对象的变量
【发布时间】:2014-03-18 09:41:35
【问题描述】:

我正在 Codeigniter 框架内创建一个数据库调用,它将根据传递给数据库调用函数的内容调用三个速率(数据库中的单元)之一。

这是我的模型函数,它将查询数据库:

public function getRate($options) { 
        $query = "SELECT * FROM staff_rates WHERE staff_id = " . (int)$options['id'] . " AND month = '" . strtolower($options['month']) . "' AND year = " . $options['year'];
        $result = $this->db->query($query);     
        $rate = $options['type'] . "_rate";         
        return $result->result()->{$rate};
    }

如您所见,一个数组被传递给函数,其中包含一个名为“type”键的值。这种类型可以是三个字符串之一,“attrition”、“movement”和“occupancy”,并且在数据库中有三个对应的单元格,“attrition_rate”、“movement_rate”和“occupancy_rate”。

我只希望这个函数从我传递给函数的单元格中返回值,所以你可以在我的代码中看到,我尝试构建我需要的单元格的名称 ($rate = $options[ 'type'] . "_rate";) 以便将其传递回我的控制器。

Severity: Notice

Message: Trying to get property of non-object

Filename: models/assessment_model.php

Line Number: 523

这是引用代码行:

return $result->result()->{$rate};

我不能以这种方式访问​​对象的变量吗(就像使用动态变量一样)?

谢谢

【问题讨论】:

  • 你的数据库字段名是什么?
  • 'attrition_rate'、'movement_rate' 和 'occupancy_rate' 是数据库字段名称,'attrition'、'movement' 和 'occupancy' 是类型字符串。然后,我使用行 '$rate = $options['type'] 构建要从对象访问的字段名称。 "_rate";'.
  • $result->result() 返回一个数组而不是一个对象。您可能可以像这样访问它return $result->result()[$rate] 参考ellislab.com/codeigniter/user-guide/database/results.html
  • 我遇到了你的问题,我在回答中发布了我的消息

标签: php arrays codeigniter object


【解决方案1】:

$result->result()

这将返回你的对象数组 你可以使用

 $result->row(); 

得到单个结果

【讨论】:

  • 然后我用它来访问我的动态变量:$rate = $options['type']。 “_速度”;返回 $result->row()->{$rate};
猜你喜欢
  • 2015-09-23
  • 1970-01-01
  • 2021-10-25
相关资源
最近更新 更多