Php yii:尝试获取非对象的属性
嗯,我找到了,但我看不出这和我的错误有什么关系。。我是新手——我知道这个借口是不可接受的,但在我提出这个问题之前,我会先找到解决办法。我希望你能帮助我 所以我有这个代码,我把这个代码放在视图中:Php yii:尝试获取非对象的属性,php,yii,Php,Yii,嗯,我找到了,但我看不出这和我的错误有什么关系。。我是新手——我知道这个借口是不可接受的,但在我提出这个问题之前,我会先找到解决办法。我希望你能帮助我 所以我有这个代码,我把这个代码放在视图中: foreach ($budget as $budget): if (array_key_exists('year', $_GET)) { $criteria = new CDbCriteria; $criteria-
foreach ($budget as $budget):
if (array_key_exists('year', $_GET)) {
$criteria = new CDbCriteria;
$criteria->condition = 'year = ' . $_GET['year'];
$criteria->addCondition('mapping_id = '. $budget->id);
$yearBudget = YearlyBudget::model()->find($criteria);
} else {
$yearBudget = new YearlyBudget;
}
endforeach;
然后在那段代码之后,我只是简单地回应一下:
echo $yearBudget->budget;
然后我得到了非对象错误。我就是不明白,我被困在这段代码里了。请帮忙,谢谢
打印(年度预算);:
)
啊,如果我的英语不好,很抱歉。您需要确保在根据您的标准查找模型后,您有一个有效的模型:
foreach ($budget as $budget):
if (array_key_exists('year', $_GET)) {
$criteria = new CDbCriteria;
$criteria->condition = 'year = ' . $_GET['year'];
$criteria->addCondition('mapping_id = '. $budget->id);
if(YearlyBudget::model()->exists($criteria)) // check if this exists
$yearBudget = YearlyBudget::model()->find($criteria);
else
$yearBudget = new YearlyBudget; // or throw an exception or something
} else {
$yearBudget = new YearlyBudget;
}
endforeach;
在访问对象的属性之前,请检查对象是否为空
if($yearBudget){
echo $yearBudget->budget;
}else{
echo "No Yearly Budget with given criteria";
}
如果没有得到理想的结果,请仔细检查条件
$criteria->condition = 'year = ' . $_GET['year'];
$criteria->addCondition('mapping_id = '. $budget->id);
我强烈建议使用
CHtml::value()
方法
当涉及到多个相关对象时,这非常方便,并且您不需要检查每个相关模型的存在来访问其属性
echo CHtml::value($budget, 'company.fiscalYear.creator.id');
我试过了,你说得对,它是不存在的。我不明白,我试着打印$yearBudget,它显示了数组。。我将编辑帖子以显示打印的结果。啊,它很有效,谢谢。。。顺便问一下,这与model()->exist之间有什么区别?如果找不到任何东西,find方法将返回null,如果您首先检查现有记录,您将确保有一个填充的模型可以使用
echo CHtml::value($yearBudget, 'budget');
echo CHtml::value($budget, 'company.fiscalYear.creator.id');