2012-02-06 13 views
0

TL; DR - どのように私は、大規模のYiiでのプライベートフィールドを割り当てていますか? のYii - 民間分野の大規模な割り当て

StackOverflowの上の任意のYii専門家

YiiFramework forumsは本当に私を助けませんでした。

私のCActiveRecordモデルにプライベートフィールドhiredがあります。これは別の関係jobCountに依存しています。基本的に、そのメンバーに関連付けられた有効なjob(別のテーブルに格納されている)が少なくとも1つある場合、それらは雇用されているとみなされます。

従来、私はafterFind方法でhiredを設定しますが、それは関係を毎回ロードを意味します。データベースクエリを保存するために、hiredが必要な場合にのみ、関係をロードしたいと思います。だから、私はhiredをプライベートに設定して、関係をロードして一度設定すると、getHired()が呼び出されます。

これまでのところは良い...

問題は、私は私のCGridViewにhiredフィールドを組み込む一度発生します。私は、はいまたはいいえで簡単なドロップダウンフィルタリングを使用して、列フィルタを使用できるようにしたいと思います。あなたのフィルタを埋めると、CGridViewはGETリクエストを返します。

$model->attributes = $_GET['ModelName']; 

明らかに私はhiredもプライベートフィールドであるにもかかわらず、同様に設定したいと思います。 (私はCGridViewの検索を扱いますが、心配しないでください)私はモデルで安全なフィールドにしましたが、設定されません。

  • setHired()機能が
  • setAttribute()機能が
  • setAttributes()機能が

これを行うための正しい方法は何ですか?呼び出されません呼び出されません呼び出されませんか。明らかに、私はちょうど...私のコントローラのアクションに

if (isset($_GET['ModelName']['hired'])) 
    $model->setHired($_GET['ModelName']['hired']); 

を余分な行を追加することができます...しかし、私は本当にむしろ民間のフィールドが大量に割り当てることができるようにする方法を学びます。

私はこれがむしろ複雑であることを理解しています。このhiredビットを合理化できる方法があれば、それを感謝します。それでも、私はこれを行う方法があるかどうかを学びたいと思います。

答えて

0

属性のリストに属性を追加する必要があるとします。

public function attributeNames() 
{ 
    $names = parent::attributeNames(); 
    $names[] = 'hired'; 
    return $names; 
} 
関連する問題