2011-06-25 109 views
0

我正在使用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),這是造成一些問題。也許這是一個記憶問題?

+1

有什麼錯誤?你是否在下拉式函數外嘗試了'Store :: model() - > findAll()'? – ldg

+0

沒有錯誤 - 頁面只顯示HTML,直到我有Store :: model() - > findAll()命令(即使在下拉菜單之外)。現在顯示日誌記錄輸出。 HTML實際上僅限於視圖,就在命令之前。 –

+0

所以,是的,它可能會超時 - 是否打算在HTML下拉菜單中顯示所有35k商店? – ldg

回答

2

在日誌文件中是否有錯誤?

如果上面的代碼正好是你的,你可能只是缺少一個右括號...

<?php 
//The below line is causing the problem 
echo $form->dropDownList(
    $model, 
    'storeId', 
    CHtml::listData(Store::model()->findAll(), 'id', 'name') 
); 
?> 
+0

對不起,缺少的括號是一個錯字,但存在於代碼中。我沒有看到任何創建的日誌文件,並且YII_debug設置爲true。任何日誌文件都在根目錄下創建,對吧? –

+0

您可以再次執行print_r chtml :: listData來查看問題是什麼? – Chux

+0

也請打開Yii的完整日誌記錄,在protected/runtime/application.log中沒有任何內容? – schmunk