TL; DR - 我如何在Yii中大規模分配私人領域?Yii - 私人領域的大規模轉讓
在StackOverflow的任何Yii專家? YiiFramework forums並沒有真正幫助我。
我在我的CActiveRecord模型中有一個私人字段hired
,該模型依賴於另一個關係jobCount
。基本上,如果至少有一個與該成員相關聯的有效job
(存儲在另一個表中),則認爲它們已被聘用。
通常,我會在afterFind方法中設置hired
,但這意味着每次都要加載關係。爲了保存數據庫查詢,我只想加載關係,如果需要hired
。所以我將hired
設置爲私有,並且可以加載該關係並將其設置爲調用getHired()
。
到目前爲止好...
的問題出現了,一旦我納入我的CGridView的hired
領域。我希望能夠使用列過濾器,並在Yes或No上進行簡單的下拉過濾。在填寫過濾器後,CGridView會傳回一個GET請求,您可以使用大規模分配將其設置爲清除模型。
$model->attributes = $_GET['ModelName'];
很顯然,我想hired
才能完成設置爲好,儘管它是一個私有字段。 (我處理了對CGridView的搜索,請不要擔心這一點。)我已經在我的模型中創建了一個安全的字段,但它沒有設置。
setHired()
功能不被調用setAttribute()
功能不被調用setAttributes()
功能不被調用
什麼是做到這一點的正確方法是什麼?很顯然,我只需要添加一個額外的行我的控制器行動......
if (isset($_GET['ModelName']['hired']))
$model->setHired($_GET['ModelName']['hired']);
...但我真的寧願學習如何允許大規模分配私有字段。
我意識到這是相當複雜的。如果您看到某種方式可以簡化此hired
位,我會很感激。不過,我想知道是否有辦法做到這一點。