gpt4 book ai didi

php - 如何覆盖 Yii 核心功能?

转载 作者:行者123 更新时间:2023-11-29 03:28:56 26 4
gpt4 key购买 nike

我是 Yii 的新手,实际上问题是,很多时候我都遇到像非对象错误这样的问题。

这是因关系而发生的。例如,我们有两个名为 patient 和 facility 的表,要在管理页面中显示数据,我们必须映射这两个表并在其中显示记录。现在,当我们删除患者表非对象错误的任何一个匹配记录的设施 ID 时。

我不知道,yii 是否基于数据库关系创建,但 yii 关系通常像 left join 一样工作,即使与核心 mysql 概念相比,left join 给出的结果是准确的结果,如 facility table values as null 而不是 value when它们不是匹配的记录。

但是在 yii 的情况下,即使是空字段名称,这也不会创 build 施数组,这就是抛出非对象错误的原因,要解决此类错误,我们在 yii 框架本身上有什么解决方案吗?

否则我有一个解决这个问题的想法,必须找到在 yii 上构建这些连接的文件,而不是空数组,我们可以填充表结构(即字段名称为 null 或空值),然后数据将是显示为空,以便我们可以修复此类错误。

任何人都可以告诉我必须在哪里找到该文件以及我必须在哪里修改代码?

提前致谢

例如:

我需要这样的

patient => 
id=>1
name=>venkat
facilityid=> 1
facility=> array(
'id'=>''
'facilityname'=>''
)

代替

patient => 
id=>1
name=>venkat
facilityid=> 1
facility=> array(

)

最佳答案

如果关系不存在,它会为 HAS ONE 返回一个空值,为 HAS MANY 类型返回一个空数组。您应该使用它来检查关系是否存在,而不仅仅是期望它包含一个空的相关模型或空相关模型的数组。

如果你想改变核心功能的行为,那么扩展任何核心类,覆盖必要的方法并改用那个类。在这种情况下,我认为您可能必须处理 CActiveRecord 类,找出它如何调用关系(可能使用 __get() 魔术方法)并重写它。我认为这不仅仅是检查关系是否存在(而且您也可能在此过程中搞砸其他事情)。

关于php - 如何覆盖 Yii 核心功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com