我一直在努力解决这个问题,我有两个模型并在Cgridview中显示一个模型的数据,这个模型包含一些id,其值在不同的表中
所以,我添加了
'值'=> 'TblAreaoflaw ::模型() - > FindByPk($ DATA-> typeoflaw) - > areaoflaw'
给出了这个错误
“试图获取非对象的属性”
可能是由于这个原因,TblAreaoflaw中不存在某些记录。我们不能通过isset检查这一行吗?
当我输入静态值时,它运行良好,如
'值'=> 'TblAreaoflaw ::模型() - > FindByPk(5) - > areaoflaw',
有人可以帮忙吗
非常感谢
答案 0 :(得分:1)
您得到的错误是因为此表达式TblAreaoflaw::model()->FindByPk($data->typeoflaw)
正在返回null
。这意味着您正在有效地尝试使null->areaoflaw
无效(这是错误消息“试图获取非对象的属性”澄清)。
我最好的猜测是$data->typeoflaw
会返回TblAreaoflaw模型的不存在的主键。
答案 1 :(得分:0)
确保:
TblAreaoflaw实际上是一个模型,我怀疑它的 Areaoflaw
您有数据库指定的主键,即您传递的 id (5)
答案 2 :(得分:0)
尝试:
'value'=> '(TblAreaoflaw::model()->FindByPk($data->typeoflaw)->areaoflaw) ?
: "default or null value"'
显然可以将null字符串替换为您想要的任何内容。您可能需要调整要使用的条件!empty()或类似,但看看它是怎么回事。 (如果你这样做或者没有使用PHP 5.3,请使用完整的三元表达式。)