【问题标题】:Access object properties outside foreach loop在 foreach 循环之外访问对象属性
【发布时间】:2020-12-18 08:25:18
【问题描述】:

我有一些通过模型来自数据库的数据

public static function loadPermissions($user_role)
{
    $db = \Config\Database::connect();
    $builder = $db->table('role_has_perm');
    $builder->select('*');
    $builder->join('perms', 'perms.id_perm = role_has_perm.id_perm', 'left');
    $builder->join('roles', 'roles.id_role = role_has_perm.id_role');
    $builder->where('role_has_perm.id_role', $user_role);

    $query = $builder->get();

    return $query->getResultObject();
}

现在,如果我使用 foreach 循环遍历它,我可以吐出数据。

foreach ($query as $row) {
    echo "id_role = " . $row->id_role . " " . "id_perm = " . $row->id_perm . " " . "role_name = " . $row->role_name;
    $role = $row->role_name;
}

但是我并不总是想遍历整个对象。我想访问特定的属性。 例如,我只想访问 role_name。

$role = $query->role_name;

我收到此错误:尝试获取非对象的属性“role_name”

我是不是处理错了对象?

欢迎任何意见:)

亚历克斯

【问题讨论】:

  • 在我看来$query 将是一个对象数组,访问role_name 作为一个整体查询并没有什么意义,期望它返回什么?您可以通过 $query[0]->role_name 获得第一行的 role_name

标签: php codeigniter object


【解决方案1】:

显然,$query 变量包含一个数组。所以你只需要通过索引访问数组的一个元素。以下 sn-p 将为您提供数组的第一个元素。

$role = $query[0]->role_name;

您也可以fetch a specific single raw

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2013-07-07
    • 2013-07-03
    • 1970-01-01
    • 2012-11-11
    • 2016-08-18
    • 2013-03-21
    相关资源
    最近更新 更多