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
位,我会很感激。不过,我想知道是否有办法做到这一点。