如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?
Posted
技术标签:
【中文标题】如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?【英文标题】:How to solve Message: Trying to get property of non-object error in Codeigniter? 【发布时间】:2018-08-22 13:56:37 【问题描述】:我在 CodeIgniter 和练习中非常新鲜。我现在正在开发一个简单的 Codeigniter 应用程序,只是为了练习。我在数据库中有银行及其分支机构。我只想显示带有银行名称的分支机构。分支机构正在显示,但在控制器中获取银行时,此错误正在显示。我在 SO links 中尝试了这些,但没有发现任何工作。
"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();
结果
SELECT * FROM
tbl_bankmaster
WHEREbid
为空
$branch_list->bankid
的值是 null
。当我对某些值进行硬编码时,视图页面显示时没有任何错误。
【问题讨论】:
行号 ??发布完整错误 阅读codeigniter.com/userguide3/database/results.html 我已添加该行。请检查我更新的问题。 @SudhiSr 检查我的答案 【参考方案1】:这样做
$get_bank = $this->FD_Model->get_bank_by_branch($branch_list[0]->bankid);
与
'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 值时,查看页面工作正常。
@SudhiSr 使用这个$branch_list[0]->bankid
仔细检查
模型中的返回类型有变化吗?
保持原样并更改我提到的控制器代码
我认为您的方法是正确的。现在查询返回值,但 'br_bank' => $get_bank[0]->bank_name
有错误。 错误是致命错误:不能使用 stdClass 类型的对象作为数组这一行'br_bank' => $get_bank[0]->bank_name
我也试过'br_bank' => $get_bank[0]['bank_name']
。错误是一样的。【参考方案2】:
像这样更改视图中的数据
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);
【参考方案3】:
在Abdulla Nilam 的回答的帮助下,我终于做到了。我刚刚传递了数组中的值,例如
'br_bank' => $get_bank->bank_name
现在视图正在工作。
【讨论】:
【参考方案4】:get_bank_by_branch($branch_list->bankid);
这个方法只返回对象。
$get_bank
这个变量你通过数组访问,但它是一个对象。
【讨论】:
以上是关于如何解决消息:试图在 Codeigniter 中获取非对象错误的属性?的主要内容,如果未能解决你的问题,请参考以下文章