【发布时间】:2011-06-25 19:00:01
【问题描述】:
我在使用 Yii 框架构建的网站时遇到问题。
在站点中,我有一个照片模型的表单。 Photos 模型与 Stores 模型相关,如下所示:
商店模型
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()? -
没有错误 - 页面只显示 HTML,直到我有 Store::model()->findAll() 命令(甚至在下拉列表之外)。现在甚至显示了日志记录输出。 HTML 实际上只限于视图,就在命令之前。
-
所以,是的,它可能会超时 - 是否打算在 HTML 下拉列表中显示所有 35k 商店?
标签: php yii yii-cmodel