我正在使用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