2011-06-25 12 views
0

Yiiフレームワークを使用して構築しているサイトに問題があります。関連するモデルのフォーム

私はPhotosモデル用のフォームを用意しています。写真のモデルはそのような店舗モデルに関連している:写真形式で

店舗モデル

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); 

問題がストアテーブルにはいくつかの問題を引き起こしている、あまりにも多くのレコード(以上35000)を、持っているということであるようです。これは記憶上の問題でしょうか?

+1

...閉じ括弧が欠落することができるされている場合は?ドロップダウン機能の外で 'Store :: model() - > findAll()'を試しましたか? – ldg

+0

エラーはありません - このページには、Store :: model() - > findAll()コマンド(ドロップダウンの外側でさえ)があるポイントまでのHTMLのみが表示されます。ログ出力も表示されます。 HTMLは文字通り、コマンドの直前のビューに限定されています。 –

+0

だから、タイムアウトになる可能性があります - 35kのすべての店舗をHTMLドロップダウンに表示する予定ですか? – 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

関連する問題