我是Yii的新手,实际上问题是,很多时候我遇到了像非对象错误这样的问题。
这是因为关系而发生的。也就是说,例如,我们有两个名为patient和facility的表,要在admin页面中显示数据,我们必须映射这两个表并在那里显示记录。现在,当我们删除任何一个匹配记录的设施ID时,患者表发生了非对象错误。
我不知道,yii是基于数据库关系创建的,但是yii关系的工作方式与左连接一样正常,即使与核心mysql概念相比,左连接也会得到结果的精确结果,如设施表值为null而不是值它们不匹配记录。
但是在yii的情况下,这将不会创建设施数组甚至空字段名称,这就是为什么非对象错误抛出,为了解决这些错误,我们对yii框架本身有任何解决方案吗?
否则我有一个想法来解决这个问题,必须找到在yii上构建这些连接的文件而不是空数组我们可以填充表结构(即字段名称为null或空值),然后数据将是显示为空,以便我们可以解决这些错误。
任何人都可以告诉我在哪里找到该文件以及我必须触摸代码的位置?
提前致谢
例如:
我需要这样
patient =>
id=>1
name=>venkat
facilityid=> 1
facility=> array(
'id'=>''
'facilityname'=>''
)
而不是
patient =>
id=>1
name=>venkat
facilityid=> 1
facility=> array(
)
答案 0 :(得分:0)
如果该关系不存在,则为HAS ONE返回空值,为HAS MANY类型返回空数组。您应该使用它来检查关系是否存在,而不仅仅是期望它包含空的相关模型或空相关模型数组。
如果要更改核心功能的行为,则扩展任何核心类,覆盖必要的方法并使用该类。在这种情况下,我认为您可能必须处理CActiveRecord类,弄清楚它如何调用关系(可能使用__get()魔术方法)并重写它。我认为,除了检查关系是否存在之外,还有更多的工作(并且您可能还会在此过程中搞砸其他内容)。
答案 1 :(得分:0)
如果您需要此功能,为什么不在您的模型和ActiveRecord类之间放置一个类并覆盖该函数以适应您的编码风格?
无需更改核心