如何解决Codeigniter中的Message: Trying to get property of non-object错误?

3

我在CodeIgniter方面非常新手,并正在练习。我现在正在开发一个简单的Codeigniter应用程序,仅供练习。我在数据库中有银行和其分支机构。我只想显示带有其银行名称的分支机构。分支机构正在显示,但在控制器获取银行时,会出现此错误。我在SO尝试了这些链接,但没有找到有效的方法。

"A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object"

in Line Number: 85 and 91

这是我的控制器

function ShowBranchList() {

            $branch_list = $this->FD_Model->get_all_branches();
            $get_bank =   $this->FD_Model->get_bank_by_branch($branch_list->bankid); //This is Line Number 85
            if($branch_list ){
            $data = array(
                'pagetitle' => 'Branch List View',
                'branch_list_data' => $branch_list,
                'br_bank' => $get_bank['bank_name'],//This is Line Number 93
            );

        }

模型

/*function for getting all branches*/

function get_all_branches() {
    $this->db->order_by( $this->brid, $this->order );
    return $this->db->get( $this->brtable )->result();
}


/*function for getting banks by branches*/

function get_bank_by_branch( $id ) {
        $this->db->where( $this->bid, $id);
        return $this->db->get( $this->banktable )->row();
    }

最后,这是我的“视图”。
 foreach ($branch_list_data as $branch_list) 
        { 
          <?php echo $branch_list->brname ?>
          <?php echo $br_bank; ?>
        }

请问有人知道这个问题吗?

更新

当我尝试查看查询时

echo $this->db->last_query();

结果

tbl_bankmaster 中选择所有 bid 为空的数据。

$branch_list->bankidnull。当我硬编码一些值时,视图页面会显示而没有任何错误。


行号 ?? 发布完整错误 - Abdulla Nilam
1
阅读 https://www.codeigniter.com/userguide3/database/results.html - Abdulla Nilam
我已经添加了这行代码,请检查我的更新问题。 - Sudhi Sr
@SudhiSr,请检查我的答案。 - Danish Ali
4个回答

1
做如下操作。
$get_bank =   $this->FD_Model->get_bank_by_branch($branch_list[0]->bankid);

AND

'br_bank' => $get_bank[0]->bank_name # this will work maybe

或者

'br_bank' => $get_bank[0]['bank_name']

它是从0开始的索引数组,因此您需要添加键来访问子项


$get_bank = $this->FD_Model->get_bank_by_branch($branch_list->bankid); 这段代码出现了错误。我认为 $branch_list->bankid 是空的,这就是实际的问题所在。当我尝试硬编码 bankid 的值时,视图页面可以正常工作。 - Sudhi Sr
@SudhiSr,请仔细检查此处 $branch_list[0]->bankid - Abdulla Nilam
模型的返回类型有没有发生变化? - Sudhi Sr
只需按照我提到的控制器代码更改,保持文本内容不变。 - Abdulla Nilam
我认为你走在正确的道路上。现在查询返回了值,但是在 'br_bank' => $get_bank[0]->bank_name 这一行中出现了错误。错误是:致命错误:无法在此行中使用 stdClass 类型的对象作为数组。我也尝试过 'br_bank' => $get_bank[0]['bank_name'],但错误仍然相同。 - Sudhi Sr
谢谢你的帮助。:)。问题现在已经解决 - Sudhi Sr

0

Abdulla Nilam的帮助下,我终于实现了它。我只是像这样将值传递给数组

'br_bank' => $get_bank->bank_name

现在视图正在工作。


0

像这样在视图中更改您的数据

foreach ($branch_list_data as $branch_list) 
{ 
   echo $branch_list['brname']; //change your data like this
   echo $br_bank; 
}

谢谢您的回答。但是我在获取分支时没有问题。我在从分支中提取银行时出现错误。这里,$get_bank = $this->FD_Model->get_bank_by_branch($branch_list->bankid); - Sudhi Sr

-1

get_bank_by_branch($branch_list->bankid);这个方法只返回一个对象。 $get_bank 这个变量你正在通过一个数组进行访问,但它是一个对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接