【发布时间】: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