我正在努力解决一个非常奇怪的问题,我似乎无法解决它。
简短版
当我从Doctrine_Record中执行查询时,当我尝试获取相关表时它似乎不起作用。我得到一个例外:
错误:未捕获的PHP错误:尝试获取文件中非对象的属性 d:/Tools/Development/xampp1.7/htdocs/x-interactive/xibits/application/views/issues/changeList.php 在第23行
在该特定行上,我尝试访问当前表的子表
长版
我正在使用Kohana + Doctrine。我有三张桌子,我想从中得到结果。
我有两种情况:
对于第一种情况,我在一个执行(doctrine)查询的模型中放了一个方法并返回结果。这只是工作正常。
对于第二种情况,将方法添加到父学说记录,获取所有内容,然后进行过滤看起来很方便。但是当我执行该查询时,我得到或者是一个未知的类异常,或者试图获得对非对象错误的引用(取决于我完全执行/返回的内容)。试图找到问题的根源,我甚至只返回应该工作的第一个方法的结果,但即使在那里我也会得到同样的错误。
从Doctrine_Record中执行查询是否有问题?
Doctrine_Record:
class Issue_History extends BaseIssue_History
{
public function getUserSafeItems()
{
$model = new Issue_History_Model();
return $model->fromIssueId(0);
}
}
Issue_History_Model:
public function fromIssueId($issue_id)
{
$q = Doctrine_Query::create()
->from("Issue_History IH, IH.Issue_History_Items IHI, IHI.Change_Types")
->where("IH.issue_id = ?", 3)
->orderBy("IH.date");
return $q->execute();
}
使用此代码的视图:
<?foreach($model->issue_history as $history): //$issue_history is the result of Issue_History_Model->fromIssueId($id)?>
<div class="changeItem">
<h4>Bijgewerkt door <?=$history->User->name?> <?=datehelper::getRelativeTime($history->date)?></h4>
<ul>
<?
if($model->showNonUserChanges || $history->hasUserSafeItems()): //In the case of the error, the first condition is false, but the last is true?>
$history_items = $model->showNonUserChanges ? $history->Issue_History_Items : $history->getUserSafeItems()->Issue_History_Items?>
<?foreach($history_items as $history_item):?>
<li><?=sprintf($history_item->Change_Types->text, $history_item->old_value, $history_item->new_value)//Exception happens here?></li>
<?endforeach?>
<?endif;?>
</ul>
</div>
<?endforeach;?>
答案 0 :(得分:0)
要查看从Doctrine获得的数据,您可以使用:
var_dump($history->toArray());
var_dump($history_items->toArray());
你没有提供你的shema,所以我不能多说..