我正在使用Yii框架构建的网站面临问题。相关模型的形式
在该网站中,我为照片模型创建了一个表单。该照片模型是关系到房屋的模型,像这样:
商店模式
public function relations()
{
return array(
'photos' => array(self::HAS_MANY, 'Photo', 'storeId'),
...
照片模式
public function relations()
{
return array(
'store' => array(self::BELONGS_TO, 'Store', 'storeId'),
);
}
在照片的形式,我想获得一个下拉与所有商店的清单像这样:
<div class="row">
<?php echo $form->labelEx($model,'storeId'); ?>
<?php
//The below line is causing the problem
echo $form->dropDownList($model,'storeId',
CHtml::listData(Store::model()->findAll(), 'id', 'name'));
?>
<?php echo $form->error($model,'storeId'); ?>
</div>
发生什么事是页面渲染在dropdownList行中发生故障。如果我删除该行,表单显示正确。我有一种感觉,这可能是因为商店模型与照片模型的关系,但无法弄清楚为什么,或者如何解决这个问题。
有人可以发现可能发生的事情吗?谢谢!
编辑:
部分地找出它!
我暂时通过添加以下代码解决了该问题:
$criteria = new CDbCriteria();
$criteria->limit = 10;
$stores = Store::model()->findAll($criteria);
看来问题是,Store表有太多的纪录(超过35000),这是造成一些问题。也许这是一个记忆问题?
有什么错误?你是否在下拉式函数外尝试了'Store :: model() - > findAll()'? – ldg
没有错误 - 页面只显示HTML,直到我有Store :: model() - > findAll()命令(即使在下拉菜单之外)。现在显示日志记录输出。 HTML实际上仅限于视图,就在命令之前。 –
所以,是的,它可能会超时 - 是否打算在HTML下拉菜单中显示所有35k商店? – ldg